├── .gitignore ├── LICENSE ├── README.md ├── doc └── Software Documentation.pdf ├── fig_github.jpg ├── make ├── PERDIX.sln ├── PERDIX.vfproj ├── env.txt ├── input │ ├── 01_square.ply │ ├── 02_honeycomb.ply │ ├── 03_circle.ply │ ├── 04_wheel.ply │ ├── 05_ellipse.ply │ ├── 06_rhombic_tiling.ply │ ├── 07_quarter_circle.ply │ ├── 08_cross.ply │ ├── 09_arrowhead.ply │ ├── 10_annulus.ply │ ├── 11_cairo_penta_tiling.ply │ ├── 12_lotus.ply │ ├── 13_hexagonal_tiling.ply │ ├── 14_prismatic_penta_tiling.ply │ ├── 15_hepta_penta_tiling.ply │ ├── 16_4_sided_polygon.ply │ ├── 17_5_sided_polygon.ply │ ├── 18_6_sided_polygon.ply │ ├── 19_l_shape_42bp.ply │ ├── 20_l_shape_63bp.ply │ ├── 21_l_shape_84bp.ply │ ├── 22_curved_arm_qaud.ply │ ├── 23_curved_arm_tri.ply │ ├── 24_curved_arm_mix.ply │ ├── archive │ │ ├── bird.geo │ │ ├── deformed.geo │ │ ├── flower1.geo │ │ ├── flower2.geo │ │ ├── henrik1.geo │ │ ├── henrik2.geo │ │ ├── pentagon.geo │ │ ├── square.igs │ │ ├── square1.geo │ │ ├── square2.geo │ │ ├── star1.geo │ │ ├── star2.geo │ │ ├── test_1.geo │ │ ├── test_1.iges │ │ ├── test_2.geo │ │ └── test_2.iges │ ├── boundary_1.iges │ ├── boundary_1.jpg │ ├── boundary_2.iges │ ├── boundary_2.jpg │ ├── boundary_3.geo │ ├── internal_1.iges │ ├── internal_1.jpg │ ├── internal_2.iges │ ├── internal_2.jpg │ ├── internal_3.geo │ └── svg │ │ ├── bird.svg │ │ ├── liberty.svg │ │ ├── rodin.svg │ │ ├── svg14.svg │ │ ├── svg3.svg │ │ ├── svg4.svg │ │ ├── svg5.svg │ │ ├── svg7.svg │ │ ├── svg8.svg │ │ └── test.svg ├── makefiles │ ├── Makefile │ └── Makefile_Win ├── resources │ ├── PERDIX.rc │ ├── icon.ico │ └── resource.h └── tools │ ├── DistMesh │ ├── DistMesh.exe │ ├── DistMesh.m │ ├── readme.txt │ └── src │ │ ├── COPYRIGHT.TXT │ │ ├── distmesh2d.m │ │ ├── dpoly.m │ │ ├── dsegment.cpp │ │ ├── dsegment.mexa64 │ │ ├── dsegment.mexmaci64 │ │ ├── dsegment.mexw32 │ │ ├── dsegment.mexw64 │ │ ├── fixmesh.m │ │ ├── hmatrix.m │ │ ├── hmatrix3d.m │ │ ├── huniform.m │ │ ├── simpplot.m │ │ └── simpvol.m │ ├── MeshConv │ └── MeshConv.exe │ ├── PyDistMesh │ └── PyDistMesh.py │ └── Shapely │ ├── PyInstaller │ ├── geos_c.dll │ ├── libgeos.lib │ ├── readme.txt │ └── spec.spec │ ├── Shapely.py │ └── readme.txt ├── release ├── PERDIX-Mac.zip ├── PERDIX-Win-MATLAB.zip └── PERDIX-Win-MCR.zip └── src ├── 1_Input.f90 ├── 2_ModGeo.f90 ├── 3_Section.f90 ├── 4_Basepair.f90 ├── 5_Route.f90 ├── 6_SeqDesign.f90 ├── 7_Output.f90 ├── Data_Bound.f90 ├── Data_DNA.f90 ├── Data_Geom.f90 ├── Data_Mesh.f90 ├── Data_Prob.f90 ├── Exam_2D_Open.f90 ├── Importer.f90 ├── List.f90 ├── Mani.f90 ├── Math.f90 ├── PERDIX.f90 ├── Para.f90 └── SpanTree.f90 /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Compiled Dynamic libraries 12 | *.so 13 | *.dylib 14 | *.dll 15 | !make/tools/Shapely/PyInstaller/geos_c.dll 16 | 17 | # Fortran module files 18 | *.mod 19 | 20 | # Compiled Static libraries 21 | *.lai 22 | *.la 23 | *.a 24 | *.lib 25 | !make/tools/Shapely/PyInstaller/libgeos.lib 26 | 27 | # Executables 28 | *.exe 29 | 30 | !make/tools/DistMesh/DistMesh.exe 31 | !make/tools/MeshConv/MeshConv.exe 32 | make/Debug 33 | make/Release 34 | make/x64 35 | make/output 36 | *.out 37 | *.app 38 | *.u2d 39 | .vs 40 | *.11 41 | *.101 42 | fort.* -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## PERDIX
2 | 3 | **PERDIX** (**P**rogrammed **E**ulerian **R**outing for **D**NA Des**i**gn using **X**-overs) is a new, free and open-source software package written in FORTRAN 90/95 that enables the automated convertion of 2D computer-generated design files into DNA sequences. These DNA sequences can be subsequently synthesized and mixed to fold DNA DX-based wireframe 2D lattices with high fidelity.
4 | 5 |
6 | 7 | **Documentation and Tutorials:**
8 | 9 | The full software documention can be downloaded [here](https://github.com/hmjeon/PERDIX/raw/master/doc/Software%20Documentation.pdf).
10 | 11 | Please find below 3 tutorial movies on how to use PERDIX to generate computer aided design files, automate meshing, generate sequences, and review atomic models. 12 | 13 | Running PERDIX | Boundary design | Boundary & internal geometric design 14 | ------------ | ------------ | ------------- 15 | [![Watch the video](https://i.ytimg.com/vi/iyrlIFPLrd8/0.jpg?time=1526015523843)](https://youtu.be/iyrlIFPLrd8) | [![Watch the video](https://i.ytimg.com/vi/o_7dMVGPxPw/0.jpg?time=1526014737537)](https://youtu.be/o_7dMVGPxPw) | [![Watch the video](https://i.ytimg.com/vi/Z1n2ol9OQ04/0.jpg?time=1526015175343)](https://youtu.be/Z1n2ol9OQ04) 16 |
17 | 18 | The *.csv file generated by PERDIX contains final staple sequences.
19 | The *.bild and *.json generated by PERDIX can be opened by [UCSF Chimera](https://www.cgl.ucsf.edu/chimera/) and [caDNAno](https://cadnano.org/).
20 | The atomic model ([PDB](https://en.wikipedia.org/wiki/Protein_Data_Bank_(file_format))) can be generated by *.cndo file using the [atomic model generator](https://cando-dna-origami.org/atomic-model-generator/) written by Dr. Keyao Pan.

21 | 22 | ## PERDIX Online
23 | [```http://perdix-dna-origami.org/```](http://perdix-dna-origami.org/)
24 | 25 | In addition to the source code and pre-compiled binaries available here, we also offer an online web application with all the functionality found in the downloaded version. By submitting the same inputs (PLY, GEO, IGES, or IGS input CAD files), the web service will return the same file output as the downloaded version.

26 | 27 | ## Available pre-compiled binaries
28 | * **[PERDIX-Win-MCR](https://github.com/lcbb/PERDIX/raw/master/release/PERDIX-Win-MCR.zip)** for Microsoft Windows
29 | * Requirements: [MATLAB Compiler Runtime 2015](https://www.mathworks.com/products/compiler/matlab-runtime.html) and Python 2.7 and Python package, [Shapely 1.6.4](http://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely)

30 | * **[PERDIX-Win-MATLAB](https://github.com/lcbb/PERDIX/raw/master/release/PERDIX-Win-MATLAB.zip)** for Microsoft Windows
31 | * Requirements: MATLAB, Python 2.7 and Python package, [Shapely 1.6.4](http://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely)

32 | * **[PERDIX-Mac](https://github.com/lcbb/PERDIX/raw/master/release/PERDIX-Mac.zip)** for macOS/Mac OS X
33 | * Requirements: Python 2.7 and Python packages, [Shapely 1.6.4](https://pypi.org/project/Shapely/) and [PyDistMesh 1.2](https://pypi.org/project/PyDistMesh/)

34 | 35 | ## Compiling from the source code
36 | ```git clone https://github.com/hmjeon/PERDIX.git```
37 | 38 | **Requirements to compile from source:**
39 | 1. [Intel Fortran compiler](https://software.intel.com/en-us/fortran-compilers): Intel Parallel Studio XE 2016, 2017 or 2018
40 | 2. [MATLAB](https://www.mathworks.com): MATLAB 2014, 2015, 2016, 2017 or 2018
41 | 3. [Python 2.7](https://www.python.org/): Not compatible with Python 3
42 | 4. [Shapely 1.6.4](https://pypi.org/project/Shapely/): Python package, Shapely is used to convert a set of lines to polygon meshes
43 | 5. [DistMesh](http://persson.berkeley.edu/distmesh/) or [PyDistMesh 1.2](https://pypi.org/project/PyDistMesh/): DistMesh (MATLAB version) or PyDistMesh (Python version) is used to generate internal triangular meshes
44 | 45 | - Compiling the PERDIX sources require [Intel Fortran](https://software.intel.com/en-us/fortran-compilers). Free Intel (R) Software Development Tools are available for qualified students, educators, academic researchers and open source contributors, see the [details](https://software.intel.com/en-us/qualify-for-free-software/).
46 | - The Intel Fortran compiler supports all of the features of the Fortran 90, Fortran 95, Fortran 2003 standards and most of Fortran 2008. It also supports some draft Fortran 2018 features. 47 | - We provide [MakeFile](./make/makefiles/Makefile) which is a simple way to organize code compilation of PERDIX.

48 | 49 | ## Features
50 | * Fully automatic procedure of the sequence design for scaffolded DNA DX-based wireframe lattices
51 | * Importing GEO, [IGES/IGS](https://en.wikipedia.org/wiki/IGES), or [PLY](https://en.wikipedia.org/wiki/PLY_(file_format)) file formats as an input
52 | * Exact edge-lengths to design highly asymmetric and irregular shapes
53 | * [JSON](https://en.wikipedia.org/wiki/JSON) output for editing staple paths and sequences from [caDNAno](https://cadnano.org/)
54 | * 3D visual outputs by [UCSF Chimera](https://www.cgl.ucsf.edu/chimera/)
55 | * 24 pre-defined target geometries
56 | * User-friendly TUI (Text-based User Interface)
57 | * Online web resources and release packages for Microsoft Windows and Mac OS
58 | * Free and open source ([GNU General Public License, version 3.0](https://www.gnu.org/licenses/gpl-3.0.en.html/))

59 | 60 | ## Author
61 | Dr. Hyungmin Jun ([hyungminjun@outlook.com](mailto:hyungminjun@outlook.com)), [LCBB](http://lcbb.mit.edu) (Laboratory for Computational Biology and Biophysics), [MIT](http://mit.edu)

62 | 63 | ## License
64 | PERDIX is an open-source software distributed under the [GPL license, version 3](https://www.gnu.org/licenses/gpl-3.0.en.html/)
65 | -------------------------------------------------------------------------------- /doc/Software Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/doc/Software Documentation.pdf -------------------------------------------------------------------------------- /fig_github.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/fig_github.jpg -------------------------------------------------------------------------------- /make/PERDIX.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.24720.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{6989167D-11E4-40FE-8C1A-2192A86A7E90}") = "PERDIX", "PERDIX.vfproj", "{C8DD52C3-9F34-47A5-B186-43A99A04512F}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {C8DD52C3-9F34-47A5-B186-43A99A04512F}.Debug|x64.ActiveCfg = Debug|x64 17 | {C8DD52C3-9F34-47A5-B186-43A99A04512F}.Debug|x64.Build.0 = Debug|x64 18 | {C8DD52C3-9F34-47A5-B186-43A99A04512F}.Debug|x86.ActiveCfg = Debug|Win32 19 | {C8DD52C3-9F34-47A5-B186-43A99A04512F}.Debug|x86.Build.0 = Debug|Win32 20 | {C8DD52C3-9F34-47A5-B186-43A99A04512F}.Release|x64.ActiveCfg = Release|x64 21 | {C8DD52C3-9F34-47A5-B186-43A99A04512F}.Release|x64.Build.0 = Release|x64 22 | {C8DD52C3-9F34-47A5-B186-43A99A04512F}.Release|x86.ActiveCfg = Release|Win32 23 | {C8DD52C3-9F34-47A5-B186-43A99A04512F}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /make/PERDIX.vfproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /make/env.txt: -------------------------------------------------------------------------------- 1 | para_platform dev 2 | para_set_seq_scaf 0 3 | GAGTTTTATCGCTTCCATGACGCAGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATCGAAGTGGACTGCTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACGATTCTGTCAAAAACTGACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGTTTAGATATGAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGGATTACTATCTGAGTCCGATGCTGTTCAACCACTAATAGGTAAGAAATCATGAGTCAAGTTACTGAACAATCCGTACGTTTCCAGACCGCTTTGGCCTCTATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGATTTCGATTTTCTGACGAGTAACAAAGTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCTTGCGTTTATGGTACGCTGGACTTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTTTATTGCTGCCGTCATTGCTTATTATGTTCATCCCGTCAACATTCAAACGGCCTGTCTCATCATGGAAGGCGCTGAATTTACGGAAAACATTATTAATGGCGTCGAGCGTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCTTGCGTGTACGCGCAGGAAACACTGACGTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAAATTACGTGCGGAAGGAGTGATGTAATGTCTAAAGGTAAAAAACGTTCTGGCGCTCGCCCTGGTCGTCCGCAGCCGTTGCGAGGTACTAAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGTAGGTGGTCAACAATTTTAATTGCAGGGGCTTCGGCCCCTTACTTGAGGATAAATTATGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTCCCATCTTGGCTTCCTTGCTGGTCAGATTGGTCGTCTTATTACCATTTCAACTACTCCGGTTATCGCTGGCGACTCCTTCGAGATGGACGCCGTTGGCGCTCTCCGTCTTTCTCCATTGCGTCGTGGCCTTGCTATTGACTCTACTGTAGACATTTTTACTTTTTATGTCCCTCATCGTCACGTTTATGGTGAACAGTGGATTAAGTTCATGAAGGATGGTGTTAATGCCACTCCTCTCCCGACTGTTAACACTACTGGTTATATTGACCATGCCGCTTTTCTTGGCACGATTAACCCTGATACCAATAAAATCCCTAAGCATTTGTTTCAGGGTTATTTGAATATCTATAACAACTATTTTAAAGCGCCGTGGATGCCTGACCGTACCGAGGCTAACCCTAATGAGCTTAATCAAGATGATGCTCGTTATGGTTTCCGTTGCTGCCATCTCAAAAACATTTGGACTGCTCCGCTTCCTCCTGAGACTGAGCTTTCTCGCCAAATGACGACTTCTACCACATCTATTGACATTATGGGTCTGCAAGCTGCTTATGCTAATTTGCATACTGACCAAGAACGTGATTACTTCATGCAGCGTTACCATGATGTTATTTCTTCATTTGGAGGTAAAACCTCTTATGACGCTGACAACCGTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCTATGATGTTGATGGAACTGACCAAACGTCGTTAGGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAACATTCTGTGCCGCGTTTCTTTGTTCCTGAGCATGGCACTATGTTTACTCTTGCGCTTGTTCGTTTTCCGCCTACTGCGACTAAAGAGATTCAGTACCTTAACGCTAAAGGTGCTTTGACTTATACCGATATTGCTGGCGACCCTGTTTTGTATGGCAACTTGCCGCCGCGTGAAATTTCTATGAAGGATGTTTTCCGTTCTGGTGATTCGTCTAAGAAGTTTAAGATTGCTGAGGGTCAGTGGTATCGTTATGCGCCTTCGTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGTGATTTGCAAGAACGCGTACTTATTCGCCACCATGATTATGACCAGTGTTTCCAGTCCGTTCAGTTGTTGCAGTGGAATAGTCAGGTTAAATTTAATGTGACCGTTTATCGCAATCTGCCGACCACTCGCGATTCAATCATGACTTCGTGATAAAAGATTGAGTGTGAGGTTATAACGCCGAAGCGGTAAAAATTTTAATTTTTGCCGCTGAGGGGTTGACCAAGCGAAGCGCGGTAGGTTTTCTGCTTAGGAGTTTAATCATGTTTCAGACTTTTATTTCTCGCCATAATTCAAACTTTTTTTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGCTTCTTCGGCACCTGTTTTACAGACACCTAAAGCTACATCGTCAACGTTATATTTTGATAGTTTGACGGTTAATGCTGGTAATGGTGGTTTTCTTCATTGCATTCAGATGGATACATCTGTCAACGCCGCTAATCAGGTTGTTTCTGTTGGTGCTGATATTGCTTTTGATGCCGACCCTAAATTTTTTGCCTGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTCCCGACTGCCTATGATGTTTATCCTTTGAATGGTCGCCATGATGGTGGTTATTATACCGTCAAGGACTGTGTGACTATTGACGTCCTTCCCCGTACGCCGGGCAATAACGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGGAGGCGGTCAAAAAGCCGCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACCGATAACAATACTGTAGGCATGGGTGATGCTGGTATTAAATCTGCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAGGCCGCCCCTAGTTTTGTTTCTGGTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGGCACTTCTGCCGTTTCTGATAAGTTGCTTGATTTGGTTGGACTTGGTGGCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTGATTATCTTGCTGCTGCATTTCCTGAGCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGGTTGACGCCGGATTTGAGAATCAAAAAGAGCTTACTAAAATGCAACTGGACAATCAGAAAGAGATTGCCGAGATGCAAAATGAGACTCAAAAAGAGATTGCTGGCATTCAGTCGGCGACTTCACGCCAGAATACGAAAGACCAGGTATATGCACAAAATGAGATGCTTGCTTATCAACAGAAGGAGTCTACTGCTCGCGTTGCGTCTATTATGGAAAACACCAATCTTTCCAAGCAACAGCAGGTTTCCGAGATTATGCGCCAAATGCTTACTCAAGCTCAAACGGCTGGTCAGTATTTTACCAATGACCAAATCAAAGAAATGACTCGCAAGGTTAGTGCTGAGGTTGACTTAGTTCATCAGCAAACGCAGAATCAGCGGTATGGCTCTTCTCATATTGGCGCTACTGCAAAGGATATTTCTAATGTCGTCACTGATGCTGCTTCTGGTGTGGTTGATATTTTTCATGGTATTGATAAAGCTGTTGCCGATACTTGGAACAATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCTCTAATTTGTCTAGGAAATAACCGTCAGGATTGACACCCTCCCAATTGTATGTTTTCATGCCTCCAAATCTTGGAGGCTTTTTTATGGTTCGTTCTTATTACCCTTCTGAATGTCACGCTGATTATTTTGACTTTGAGCGTATCGAGGCTCTTAAACCTGCTATTGAGGCTTGTGGCATTTCTACTCTTTCTCAATCCCCAATGCTTGGCTTCCATAAGCAGATGGATAACCGCATCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTATGCAGGGCGTTGAGTTCGATAATGGTGATATGTATGTTGACGGCCATAAGGCTGCTTCTGACGTTCGTGATGAGTTTGTATCTGTTACTGAGAAGTTAATGGATGAATTGGCACAATGCTACAATGTGCTCCCCCAACTTGATATTAATAACACTATAGACCACCGCCCCGAAGGGGACGAAAAATGGTTTTTAGAGAACGAGAAGACGGTTACGCAGTTTTGCCGCAAGCTGGCTGCTGAACGCCCTCTTAAGGATATTCGCGATGAGTATAATTACCCCAAAAAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTGGAGGCCTCCACTATGAAATCGCGTAGAGGCTTTGCTATTCAGCGTTTGATGAATGCAATGCGACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGACTATTTTCGTGATATTGGTCGTATGGTTCTTGCTGCCGAGGGTCGCAAGGCTAATGATTCACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCATTTCCATGCGGTGCACTTTATGCGGACACTTCCTACAGGTAGCGTTGACCCTAATTTTGGTCGTCGGGTACGCAATCGCCGCCAGTTAAATAGCTTGCAAAATACGTGGCCTTATGGTTACAGTATGCCCATCGCAGTTCGCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGCCGCTTAAAGCTACCAGTTATATGGCTGTTGGTTTCTATGTGGCTAAATACGTTAACAAAAAGTCAGATATGGACCTTGCTGCTAAAGGTCTAGGAGCTAAAGAATGGAACAACTCACTAAAAACCAAGCTGTCGCTACTTCCCAAGAAGCTGTTCAGAATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGCCGTTCAACCAGATATTGAAGCAGAACGCAAAAAGAGAGATGAGATTGAGGCTGGGAAAAGTTACTGTAGCCGACGTTTTGGCGGCGCAACCTGTGACGACAAATCTGCTCAAATTTATGCGCGCTTCGATAAAAATGATTGGCGTATCCAACCTGCA -------------------------------------------------------------------------------- /make/input/01_square.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 25 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 32 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -42.5640 -42.5640 0.0000 11 | -21.2820 -42.5640 0.0000 12 | 0.0000 -42.5640 0.0000 13 | 21.2820 -42.5640 0.0000 14 | 42.5640 -42.5640 0.0000 15 | -42.5640 -21.2820 0.0000 16 | -21.2820 -21.2820 0.0000 17 | 0.0000 -21.2820 0.0000 18 | 21.2820 -21.2820 0.0000 19 | 42.5640 -21.2820 0.0000 20 | -42.5640 0.0000 0.0000 21 | -21.2820 0.0000 0.0000 22 | 0.0000 0.0000 0.0000 23 | 21.2820 0.0000 0.0000 24 | 42.5640 0.0000 0.0000 25 | -42.5640 21.2820 0.0000 26 | -21.2820 21.2820 0.0000 27 | 0.0000 21.2820 0.0000 28 | 21.2820 21.2820 0.0000 29 | 42.5640 21.2820 0.0000 30 | -42.5640 42.5640 0.0000 31 | -21.2820 42.5640 0.0000 32 | 0.0000 42.5640 0.0000 33 | 21.2820 42.5640 0.0000 34 | 42.5640 42.5640 0.0000 35 | 3 0 6 5 36 | 3 0 1 6 37 | 3 1 2 6 38 | 3 2 7 6 39 | 3 2 8 7 40 | 3 2 3 8 41 | 3 3 4 8 42 | 3 4 9 8 43 | 3 5 6 10 44 | 3 6 11 10 45 | 3 6 12 11 46 | 3 6 7 12 47 | 3 7 8 12 48 | 3 8 13 12 49 | 3 8 14 13 50 | 3 8 9 14 51 | 3 10 16 15 52 | 3 10 11 16 53 | 3 11 12 16 54 | 3 12 17 16 55 | 3 12 18 17 56 | 3 12 13 18 57 | 3 13 14 18 58 | 3 14 19 18 59 | 3 15 16 20 60 | 3 16 21 20 61 | 3 16 22 21 62 | 3 16 17 22 63 | 3 17 18 22 64 | 3 18 23 22 65 | 3 18 24 23 66 | 3 18 19 24 67 | -------------------------------------------------------------------------------- /make/input/02_honeycomb.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 30 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 36 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -55.5843 10.6971 0.0000 11 | -18.5281 -10.6971 0.0000 12 | -37.0561 -0.0000 0.0000 13 | -55.5843 -10.6971 0.0000 14 | 0.0000 -21.3944 0.0000 15 | -37.0561 -42.7888 0.0000 16 | -18.5281 -32.0916 0.0000 17 | -37.0561 -21.3944 0.0000 18 | -18.5281 -53.4860 0.0000 19 | -18.5281 10.6971 0.0000 20 | -37.0561 42.7888 0.0000 21 | -37.0561 21.3944 0.0000 22 | -18.5281 32.0916 0.0000 23 | 0.0000 21.3944 0.0000 24 | -18.5281 53.4860 0.0000 25 | 18.5280 -53.4860 0.0000 26 | 37.0562 -42.7888 0.0000 27 | 37.0562 -21.3944 0.0000 28 | 0.0000 -42.7888 0.0000 29 | 18.5280 -32.0916 0.0000 30 | 55.5843 -10.6971 0.0000 31 | 55.5843 10.6971 0.0000 32 | 37.0562 21.3944 0.0000 33 | 18.5280 -10.6971 0.0000 34 | 37.0562 -0.0000 0.0000 35 | 37.0562 42.7888 0.0000 36 | 18.5280 53.4860 0.0000 37 | 0.0000 42.7888 0.0000 38 | 18.5280 10.6971 0.0000 39 | 18.5280 32.0916 0.0000 40 | 3 7 1 2 41 | 3 1 9 2 42 | 3 9 11 2 43 | 3 11 0 2 44 | 3 0 3 2 45 | 3 3 7 2 46 | 3 8 18 6 47 | 3 18 4 6 48 | 3 4 1 6 49 | 3 1 7 6 50 | 3 7 5 6 51 | 3 5 8 6 52 | 3 9 13 12 53 | 3 13 27 12 54 | 3 27 14 12 55 | 3 14 10 12 56 | 3 10 11 12 57 | 3 11 9 12 58 | 3 15 16 19 59 | 3 16 17 19 60 | 3 17 23 19 61 | 3 23 4 19 62 | 3 4 18 19 63 | 3 18 15 19 64 | 3 17 20 24 65 | 3 20 21 24 66 | 3 21 22 24 67 | 3 22 28 24 68 | 3 28 23 24 69 | 3 23 17 24 70 | 3 28 22 29 71 | 3 22 25 29 72 | 3 25 26 29 73 | 3 26 27 29 74 | 3 27 13 29 75 | 3 13 28 29 76 | -------------------------------------------------------------------------------- /make/input/03_circle.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 19 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 24 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -44.4787 0.3276 0.0000 11 | -38.6971 -22.0646 0.0000 12 | -38.3439 22.4151 0.0000 13 | -23.6656 -0.0769 0.0000 14 | -22.4390 -38.5371 0.0000 15 | -22.0421 38.5050 0.0000 16 | -11.8824 -20.6568 0.0000 17 | -11.7831 20.3310 0.0000 18 | 0.0000 44.3504 0.0000 19 | 0.0000 -0.2248 0.0000 20 | 0.0000 -44.6118 0.0000 21 | 11.7831 20.3310 0.0000 22 | 11.8824 -20.6568 0.0000 23 | 22.0421 38.5050 0.0000 24 | 22.4390 -38.5371 0.0000 25 | 23.6656 -0.0769 0.0000 26 | 38.3439 22.4151 0.0000 27 | 38.6971 -22.0646 0.0000 28 | 44.4787 0.3276 0.0000 29 | 3 11 7 9 30 | 3 8 7 11 31 | 3 10 6 4 32 | 3 9 6 12 33 | 3 14 17 12 34 | 3 10 14 12 35 | 3 12 6 10 36 | 3 9 7 3 37 | 3 3 6 9 38 | 3 0 3 2 39 | 3 2 3 7 40 | 3 15 11 9 41 | 3 9 12 15 42 | 3 15 17 18 43 | 3 15 12 17 44 | 3 16 15 18 45 | 3 11 15 16 46 | 3 1 4 6 47 | 3 1 3 0 48 | 3 6 3 1 49 | 3 5 7 8 50 | 3 5 2 7 51 | 3 8 11 13 52 | 3 11 16 13 53 | -------------------------------------------------------------------------------- /make/input/04_wheel.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 11 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 10 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 25.9103 18.8249 0.0000 11 | 9.8969 30.4594 0.0000 12 | -9.8969 30.4594 0.0000 13 | -25.9103 18.8249 0.0000 14 | -32.0269 0.0000 0.0000 15 | -25.9103 -18.8249 0.0000 16 | -9.8969 -30.4594 0.0000 17 | 9.8969 -30.4594 0.0000 18 | 25.9103 -18.8249 0.0000 19 | 32.0269 -0.0000 0.0000 20 | 0.0000 0.0000 0.0000 21 | 3 10 0 1 22 | 3 10 1 2 23 | 3 10 2 3 24 | 3 10 3 4 25 | 3 10 4 5 26 | 3 10 5 6 27 | 3 10 6 7 28 | 3 10 7 8 29 | 3 10 8 9 30 | 3 10 9 0 31 | -------------------------------------------------------------------------------- /make/input/05_ellipse.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 27 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 36 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -98.0446 -2.0151 0.0000 11 | -86.5885 24.0078 0.0000 12 | -82.8584 -25.6187 0.0000 13 | -67.4102 4.6276 0.0000 14 | -60.7493 39.3518 0.0000 15 | -56.6498 -39.4231 0.0000 16 | -49.7975 -15.3608 0.0000 17 | -40.3642 16.4488 0.0000 18 | -30.3333 47.4603 0.0000 19 | -28.5206 -46.2241 0.0000 20 | -24.4484 -13.9472 0.0000 21 | -13.0507 17.8132 0.0000 22 | -0.0000 -48.3392 0.0000 23 | -0.0000 49.8485 0.0000 24 | -0.0000 -15.7504 0.0000 25 | 13.0507 17.8132 0.0000 26 | 24.4484 -13.9472 0.0000 27 | 28.5206 -46.2241 0.0000 28 | 30.3333 47.4603 0.0000 29 | 40.3642 16.4488 0.0000 30 | 49.7975 -15.3608 0.0000 31 | 56.6498 -39.4231 0.0000 32 | 60.7492 39.3518 0.0000 33 | 67.4102 4.6276 0.0000 34 | 82.8584 -25.6187 0.0000 35 | 86.5886 24.0078 0.0000 36 | 98.0446 -2.0151 0.0000 37 | 3 16 20 19 38 | 3 19 20 23 39 | 3 26 25 23 40 | 3 23 24 26 41 | 3 20 24 23 42 | 3 22 18 19 43 | 3 19 23 22 44 | 3 22 23 25 45 | 3 0 2 3 46 | 3 3 1 0 47 | 3 1 3 4 48 | 3 21 24 20 49 | 3 12 14 9 50 | 3 9 14 10 51 | 3 10 14 11 52 | 3 13 8 11 53 | 3 6 9 10 54 | 3 5 9 6 55 | 3 2 5 6 56 | 3 6 3 2 57 | 3 17 14 12 58 | 3 16 14 17 59 | 3 20 16 17 60 | 3 17 21 20 61 | 3 15 14 16 62 | 3 15 11 14 63 | 3 15 16 19 64 | 3 19 18 15 65 | 3 15 18 13 66 | 3 13 11 15 67 | 3 7 4 3 68 | 3 3 6 7 69 | 3 8 4 7 70 | 3 7 11 8 71 | 3 10 11 7 72 | 3 7 6 10 73 | -------------------------------------------------------------------------------- /make/input/06_rhombic_tiling.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 19 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 12 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 16.2780 -28.1943 0.0000 11 | 0.0000 -37.5924 0.0000 12 | -16.2780 -28.1943 0.0000 13 | 0.0000 -18.7962 0.0000 14 | -32.5560 -18.7962 0.0000 15 | -32.5560 0.0000 0.0000 16 | -16.2780 -9.3981 0.0000 17 | -32.5560 18.7962 0.0000 18 | -16.2780 28.1943 0.0000 19 | -16.2780 9.3981 0.0000 20 | 0.0000 37.5924 0.0000 21 | 16.2780 28.1943 0.0000 22 | 0.0000 18.7962 0.0000 23 | 32.5560 18.7962 0.0000 24 | 32.5560 0.0000 0.0000 25 | 16.2780 9.3981 0.0000 26 | 32.5560 -18.7962 0.0000 27 | 16.2780 -9.3981 0.0000 28 | 0.0000 0.0000 0.0000 29 | 4 3 2 1 0 30 | 4 6 5 4 2 31 | 4 9 8 7 5 32 | 4 12 11 10 8 33 | 4 15 14 13 11 34 | 4 17 0 16 14 35 | 4 3 18 6 2 36 | 4 9 5 6 18 37 | 4 0 17 18 3 38 | 4 18 12 8 9 39 | 4 12 18 15 11 40 | 4 17 14 15 18 41 | -------------------------------------------------------------------------------- /make/input/07_quarter_circle.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 19 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 12 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -43.8236 -43.8236 0.0000 11 | -43.8236 -14.5208 0.0000 12 | -43.8236 14.7819 0.0000 13 | -14.5208 -43.8236 0.0000 14 | -19.4046 -19.4046 0.0000 15 | -24.2884 5.0143 0.0000 16 | 14.7819 -43.8236 0.0000 17 | 5.0143 -24.2884 0.0000 18 | -4.7533 -4.7533 0.0000 19 | 17.1520 17.1520 0.0000 20 | 39.0572 39.0572 0.0000 21 | -11.6287 34.7399 0.0000 22 | 1.0311 64.4654 0.0000 23 | -43.8236 44.0847 0.0000 24 | -43.8236 73.3875 0.0000 25 | 34.7399 -11.6287 0.0000 26 | 64.4654 1.0311 0.0000 27 | 44.0847 -43.8236 0.0000 28 | 73.3875 -43.8236 0.0000 29 | 4 3 4 1 0 30 | 4 4 5 2 1 31 | 4 6 7 4 3 32 | 4 7 8 5 4 33 | 4 8 9 11 5 34 | 4 9 10 12 11 35 | 4 5 11 13 2 36 | 4 11 12 14 13 37 | 4 7 15 9 8 38 | 4 15 16 10 9 39 | 4 6 17 15 7 40 | 4 17 18 16 15 41 | -------------------------------------------------------------------------------- /make/input/08_cross.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 33 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 20 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 25.5973 -51.1945 0.0000 11 | 38.3959 -38.3959 0.0000 12 | 51.1945 -25.5973 0.0000 13 | 12.7986 -38.3959 0.0000 14 | 25.5973 -25.5973 0.0000 15 | 38.3959 -12.7986 0.0000 16 | -25.5973 -51.1945 0.0000 17 | -12.7986 -38.3959 0.0000 18 | 0.0000 -25.5973 0.0000 19 | 12.7986 -12.7986 0.0000 20 | 25.5973 -0.0000 0.0000 21 | 38.3959 12.7986 0.0000 22 | 51.1945 25.5973 0.0000 23 | -38.3959 -38.3959 0.0000 24 | -25.5973 -25.5973 0.0000 25 | -12.7986 -12.7986 0.0000 26 | 0.0000 0.0000 0.0000 27 | 12.7986 12.7986 0.0000 28 | 25.5973 25.5973 0.0000 29 | 38.3959 38.3959 0.0000 30 | -51.1945 -25.5973 0.0000 31 | -38.3959 -12.7986 0.0000 32 | -25.5973 0.0000 0.0000 33 | -12.7986 12.7986 0.0000 34 | 0.0000 25.5973 0.0000 35 | 12.7986 38.3959 0.0000 36 | 25.5973 51.1945 0.0000 37 | -38.3959 12.7986 0.0000 38 | -25.5973 25.5973 0.0000 39 | -12.7986 38.3959 0.0000 40 | -51.1945 25.5973 0.0000 41 | -38.3959 38.3959 0.0000 42 | -25.5973 51.1945 0.0000 43 | 4 0 1 4 3 44 | 4 1 2 5 4 45 | 4 3 4 9 8 46 | 4 4 5 10 9 47 | 4 6 7 14 13 48 | 4 7 8 15 14 49 | 4 8 9 16 15 50 | 4 9 10 17 16 51 | 4 10 11 18 17 52 | 4 11 12 19 18 53 | 4 13 14 21 20 54 | 4 14 15 22 21 55 | 4 15 16 23 22 56 | 4 16 17 24 23 57 | 4 17 18 25 24 58 | 4 18 19 26 25 59 | 4 22 23 28 27 60 | 4 23 24 29 28 61 | 4 27 28 31 30 62 | 4 28 29 32 31 63 | -------------------------------------------------------------------------------- /make/input/09_arrowhead.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 24 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 14 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -18.8251 -45.4940 0.0000 11 | -37.6502 -45.4940 0.0000 12 | -37.6502 -20.3939 0.0000 13 | -18.8251 -14.1189 0.0000 14 | -37.6502 4.7063 0.0000 15 | -18.8251 17.2563 0.0000 16 | -56.4754 -7.8438 0.0000 17 | -56.4754 10.9813 0.0000 18 | -37.6502 29.8065 0.0000 19 | -18.8251 48.6316 0.0000 20 | 0.0000 67.4567 0.0000 21 | 0.0000 29.8065 0.0000 22 | 18.8251 48.6316 0.0000 23 | 18.8251 17.2563 0.0000 24 | 37.6502 29.8065 0.0000 25 | 37.6502 4.7063 0.0000 26 | 56.4754 10.9813 0.0000 27 | 56.4754 -7.8438 0.0000 28 | 37.6502 -20.3939 0.0000 29 | 18.8251 -14.1189 0.0000 30 | 37.6502 -45.4940 0.0000 31 | 18.8251 -45.4940 0.0000 32 | 0.0000 -45.4940 0.0000 33 | 0.0000 -7.8438 0.0000 34 | 4 3 2 1 0 35 | 4 3 5 4 2 36 | 4 8 7 6 4 37 | 4 4 5 9 8 38 | 4 5 11 10 9 39 | 4 11 13 12 10 40 | 4 13 15 14 12 41 | 4 15 17 16 14 42 | 4 13 19 18 15 43 | 4 19 21 20 18 44 | 4 19 23 22 21 45 | 4 23 3 0 22 46 | 4 3 23 11 5 47 | 4 19 13 11 23 48 | -------------------------------------------------------------------------------- /make/input/10_annulus.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 30 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 20 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 32.3897 0.0000 0.0000 11 | 52.1834 0.0000 0.0000 12 | 71.9772 0.0000 0.0000 13 | 26.2038 19.0382 0.0000 14 | 42.2173 30.6727 0.0000 15 | 58.2307 42.3071 0.0000 16 | 10.0090 30.8045 0.0000 17 | 16.1256 49.6294 0.0000 18 | 22.2422 68.4543 0.0000 19 | -10.0090 30.8045 0.0000 20 | -16.1256 49.6294 0.0000 21 | -22.2422 68.4543 0.0000 22 | -26.2038 19.0382 0.0000 23 | -42.2173 30.6727 0.0000 24 | -58.2307 42.3071 0.0000 25 | -32.3897 0.0000 0.0000 26 | -52.1834 0.0000 0.0000 27 | -71.9772 0.0000 0.0000 28 | -26.2038 -19.0382 0.0000 29 | -42.2173 -30.6727 0.0000 30 | -58.2307 -42.3071 0.0000 31 | -10.0090 -30.8045 0.0000 32 | -16.1256 -49.6294 0.0000 33 | -22.2422 -68.4543 0.0000 34 | 10.0090 -30.8045 0.0000 35 | 16.1256 -49.6294 0.0000 36 | 22.2422 -68.4543 0.0000 37 | 26.2038 -19.0382 0.0000 38 | 42.2173 -30.6727 0.0000 39 | 58.2307 -42.3071 0.0000 40 | 4 0 1 4 3 41 | 4 1 2 5 4 42 | 4 3 4 7 6 43 | 4 4 5 8 7 44 | 4 6 7 10 9 45 | 4 7 8 11 10 46 | 4 9 10 13 12 47 | 4 10 11 14 13 48 | 4 12 13 16 15 49 | 4 13 14 17 16 50 | 4 15 16 19 18 51 | 4 16 17 20 19 52 | 4 18 19 22 21 53 | 4 19 20 23 22 54 | 4 21 22 25 24 55 | 4 22 23 26 25 56 | 4 24 25 28 27 57 | 4 25 26 29 28 58 | 4 27 28 1 0 59 | 4 28 29 2 1 60 | -------------------------------------------------------------------------------- /make/input/11_cairo_penta_tiling.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 36 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 16 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 19.1625 -57.4876 0.0000 11 | 0.0000 -68.5511 0.0000 12 | -19.1626 -57.4876 0.0000 13 | -8.0990 -38.3251 0.0000 14 | 8.0991 -38.3251 0.0000 15 | -38.3251 -46.4241 0.0000 16 | -38.3251 -30.2260 0.0000 17 | -19.1626 -19.1626 0.0000 18 | -57.4876 -19.1626 0.0000 19 | -46.4241 0.0000 0.0000 20 | -30.2260 0.0000 0.0000 21 | -76.6501 -8.0990 0.0000 22 | -76.6501 8.0991 0.0000 23 | -57.4876 19.1625 0.0000 24 | -38.3251 30.2260 0.0000 25 | -19.1626 19.1625 0.0000 26 | -38.3251 46.4241 0.0000 27 | -19.1626 57.4876 0.0000 28 | -8.0990 38.3251 0.0000 29 | 0.0000 68.5511 0.0000 30 | 19.1625 57.4876 0.0000 31 | 8.0991 38.3251 0.0000 32 | 38.3251 46.4241 0.0000 33 | 38.3251 30.2260 0.0000 34 | 19.1625 19.1625 0.0000 35 | 57.4877 19.1625 0.0000 36 | 46.4241 0.0000 0.0000 37 | 30.2260 0.0000 0.0000 38 | 76.6502 8.0991 0.0000 39 | 76.6502 -8.0990 0.0000 40 | 57.4877 -19.1626 0.0000 41 | 38.3251 -30.2260 0.0000 42 | 19.1625 -19.1626 0.0000 43 | 38.3251 -46.4241 0.0000 44 | 0.0000 -8.0990 0.0000 45 | 0.0000 8.0991 0.0000 46 | 5 4 3 2 1 0 47 | 5 3 7 6 5 2 48 | 5 7 10 9 8 6 49 | 5 9 13 12 11 8 50 | 5 9 10 15 14 13 51 | 5 15 18 17 16 14 52 | 5 18 21 20 19 17 53 | 5 21 24 23 22 20 54 | 5 24 27 26 25 23 55 | 5 26 30 29 28 25 56 | 5 26 27 32 31 30 57 | 5 32 4 0 33 31 58 | 5 32 34 7 3 4 59 | 5 34 35 15 10 7 60 | 5 27 24 35 34 32 61 | 5 24 21 18 15 35 62 | -------------------------------------------------------------------------------- /make/input/12_lotus.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 36 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 13 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -58.0509 -81.6707 0.0000 11 | -48.1328 -45.9638 0.0000 12 | 0.4683 -65.3049 0.0000 13 | -28.7916 -77.7035 0.0000 14 | -89.0469 -23.1509 0.0000 15 | -100.7012 0.1575 0.0000 16 | -77.3922 -1.8261 0.0000 17 | -63.0105 -17.6957 0.0000 18 | -82.3518 45.7832 0.0000 19 | -59.0428 35.8645 0.0000 20 | -48.6285 21.9786 0.0000 21 | -50.6121 63.1403 0.0000 22 | -19.8647 50.7423 0.0000 23 | -15.0047 29.2189 0.0000 24 | -30.2791 12.0599 0.0000 25 | 0.4683 77.5224 0.0000 26 | 19.8095 50.7423 0.0000 27 | 14.9495 29.2189 0.0000 28 | -0.5235 45.2870 0.0000 29 | 50.5574 63.1403 0.0000 30 | 58.9881 35.8645 0.0000 31 | 48.5732 21.9786 0.0000 32 | 30.2239 12.0599 0.0000 33 | 82.2966 45.7832 0.0000 34 | 77.3375 -1.8261 0.0000 35 | 62.9553 -17.6957 0.0000 36 | 100.6460 0.1575 0.0000 37 | 88.9917 -23.1509 0.0000 38 | 48.0776 -45.9638 0.0000 39 | 57.9963 -81.6707 0.0000 40 | 29.2321 -77.7035 0.0000 41 | -17.4844 -8.9277 0.0000 42 | -23.3364 -37.0369 0.0000 43 | 17.4292 -8.9277 0.0000 44 | -0.0273 12.5555 0.0000 45 | 23.2811 -37.0369 0.0000 46 | 4 3 2 1 0 47 | 5 7 6 5 4 1 48 | 5 7 10 9 8 6 49 | 6 10 14 13 12 11 9 50 | 6 13 18 17 16 15 12 51 | 6 17 22 21 20 19 16 52 | 5 21 25 24 23 20 53 | 5 25 28 27 26 24 54 | 4 2 30 29 28 55 | 7 32 31 14 10 7 1 2 56 | 8 31 34 33 22 17 18 13 14 57 | 7 33 35 2 28 25 21 22 58 | 6 2 35 33 34 31 32 59 | -------------------------------------------------------------------------------- /make/input/13_hexagonal_tiling.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 38 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 12 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -8.0990 -66.4482 0.0000 11 | 8.0990 -66.4482 0.0000 12 | -32.3962 -52.4202 0.0000 13 | -16.1981 -52.4202 0.0000 14 | 16.1981 -52.4202 0.0000 15 | 32.3962 -52.4202 0.0000 16 | -40.4952 -38.3923 0.0000 17 | -8.0990 -38.3923 0.0000 18 | 8.0990 -38.3923 0.0000 19 | 40.4952 -38.3923 0.0000 20 | -32.3962 -24.3644 0.0000 21 | -16.1981 -24.3644 0.0000 22 | 16.1981 -24.3644 0.0000 23 | 32.3962 -24.3644 0.0000 24 | -40.4952 -10.3364 0.0000 25 | -8.0990 -10.3364 0.0000 26 | 8.0990 -10.3364 0.0000 27 | 40.4952 -10.3364 0.0000 28 | -32.3962 3.6915 0.0000 29 | -16.1981 3.6915 0.0000 30 | 16.1981 3.6915 0.0000 31 | 32.3962 3.6915 0.0000 32 | -40.4952 17.7195 0.0000 33 | -8.0990 17.7195 0.0000 34 | 8.0990 17.7195 0.0000 35 | 40.4952 17.7195 0.0000 36 | -32.3962 31.7475 0.0000 37 | -16.1981 31.7475 0.0000 38 | 16.1981 31.7475 0.0000 39 | 32.3962 31.7475 0.0000 40 | -40.4952 45.7755 0.0000 41 | -8.0990 45.7755 0.0000 42 | 8.0990 45.7755 0.0000 43 | 40.4952 45.7755 0.0000 44 | -32.3962 59.8034 0.0000 45 | -16.1981 59.8034 0.0000 46 | 16.1981 59.8034 0.0000 47 | 32.3962 59.8034 0.0000 48 | 6 0 1 4 8 7 3 49 | 6 2 3 7 11 10 6 50 | 6 4 5 9 13 12 8 51 | 6 7 8 12 16 15 11 52 | 6 10 11 15 19 18 14 53 | 6 12 13 17 21 20 16 54 | 6 15 16 20 24 23 19 55 | 6 18 19 23 27 26 22 56 | 6 20 21 25 29 28 24 57 | 6 23 24 28 32 31 27 58 | 6 26 27 31 35 34 30 59 | 6 28 29 33 37 36 32 60 | -------------------------------------------------------------------------------- /make/input/14_prismatic_penta_tiling.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 31 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 14 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -44.5537 -42.8724 0.0000 11 | -44.5537 -25.7234 0.0000 12 | -29.7025 -17.1490 0.0000 13 | -14.8512 -25.7234 0.0000 14 | -14.8512 -42.8724 0.0000 15 | -59.4049 -17.1490 0.0000 16 | -59.4049 -0.0000 0.0000 17 | -29.7025 -0.0000 0.0000 18 | -59.4049 17.1490 0.0000 19 | -44.5537 25.7234 0.0000 20 | -29.7025 17.1490 0.0000 21 | -44.5537 42.8724 0.0000 22 | -14.8512 42.8724 0.0000 23 | -14.8512 25.7234 0.0000 24 | 14.8512 42.8724 0.0000 25 | 14.8512 25.7234 0.0000 26 | -0.0000 17.1490 0.0000 27 | 44.5537 42.8724 0.0000 28 | 44.5537 25.7234 0.0000 29 | 29.7025 17.1490 0.0000 30 | 59.4050 17.1490 0.0000 31 | 59.4050 -0.0000 0.0000 32 | 29.7025 -0.0000 0.0000 33 | 59.4050 -17.1490 0.0000 34 | 44.5537 -25.7234 0.0000 35 | 29.7025 -17.1490 0.0000 36 | 44.5537 -42.8724 0.0000 37 | 14.8512 -42.8724 0.0000 38 | 14.8512 -25.7234 0.0000 39 | -0.0000 -17.1490 0.0000 40 | -0.0000 -0.0000 0.0000 41 | 5 4 3 2 1 0 42 | 5 2 7 6 5 1 43 | 5 7 10 9 8 6 44 | 5 10 13 12 11 9 45 | 5 13 16 15 14 12 46 | 5 15 19 18 17 14 47 | 5 19 22 21 20 18 48 | 5 22 25 24 23 21 49 | 5 25 28 27 26 24 50 | 5 28 29 3 4 27 51 | 5 29 30 7 2 3 52 | 5 22 30 29 28 25 53 | 5 30 22 19 15 16 54 | 5 10 7 30 16 13 55 | -------------------------------------------------------------------------------- /make/input/15_hepta_penta_tiling.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 30 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 8 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 26.5213 -41.4704 0.0000 11 | 11.8031 -59.9265 0.0000 12 | -11.8031 -59.9265 0.0000 13 | -26.5213 -41.4704 0.0000 14 | -21.2684 -18.4561 0.0000 15 | -0.0000 -8.2138 0.0000 16 | 21.2684 -18.4561 0.0000 17 | -47.7897 -51.7128 0.0000 18 | -69.0581 -41.4705 0.0000 19 | -74.3110 -18.4562 0.0000 20 | -59.5928 -0.0001 0.0000 21 | -35.9866 -0.0001 0.0000 22 | -74.3110 18.4562 0.0000 23 | -69.0581 41.4705 0.0000 24 | -47.7897 51.7128 0.0000 25 | -26.5213 41.4705 0.0000 26 | -21.2684 18.4562 0.0000 27 | -11.8031 59.9265 0.0000 28 | 11.8031 59.9265 0.0000 29 | 26.5213 41.4705 0.0000 30 | 21.2684 18.4562 0.0000 31 | -0.0000 8.2138 0.0000 32 | 47.7897 51.7127 0.0000 33 | 69.0581 41.4704 0.0000 34 | 74.3110 18.4561 0.0000 35 | 59.5928 -0.0000 0.0000 36 | 35.9866 -0.0000 0.0000 37 | 74.3110 -18.4560 0.0000 38 | 69.0581 -41.4704 0.0000 39 | 47.7897 -51.7127 0.0000 40 | 7 6 5 4 3 2 1 0 41 | 7 4 11 10 9 8 7 3 42 | 7 11 16 15 14 13 12 10 43 | 7 16 21 20 19 18 17 15 44 | 7 20 26 25 24 23 22 19 45 | 7 26 6 0 29 28 27 25 46 | 5 20 21 5 6 26 47 | 5 16 11 4 5 21 48 | -------------------------------------------------------------------------------- /make/input/16_4_sided_polygon.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 5 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 4 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 0.0000 21.2820 0.0000 11 | -21.2820 0.0000 0.0000 12 | -0.0000 -21.2820 0.0000 13 | 21.2820 -0.0000 0.0000 14 | 0.0000 0.0000 0.0000 15 | 3 4 0 1 16 | 3 4 1 2 17 | 3 4 2 3 18 | 3 4 3 0 19 | -------------------------------------------------------------------------------- /make/input/17_5_sided_polygon.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 6 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 5 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 6.5242 20.0794 0.0000 11 | -17.0806 12.4098 0.0000 12 | -17.0806 -12.4098 0.0000 13 | 6.5242 -20.0794 0.0000 14 | 21.1127 -0.0000 0.0000 15 | 0.0000 -0.0000 0.0000 16 | 3 5 0 1 17 | 3 5 1 2 18 | 3 5 2 3 19 | 3 5 3 4 20 | 3 5 4 0 21 | -------------------------------------------------------------------------------- /make/input/18_6_sided_polygon.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 7 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 6 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | 10.6971 18.5279 0.0000 11 | -10.6971 18.5279 0.0000 12 | -21.3942 0.0000 0.0000 13 | -10.6971 -18.5279 0.0000 14 | 10.6971 -18.5279 0.0000 15 | 21.3942 -0.0000 0.0000 16 | 0.0000 0.0000 0.0000 17 | 3 6 0 1 18 | 3 6 1 2 19 | 3 6 2 3 20 | 3 6 3 4 21 | 3 6 4 5 22 | 3 6 5 0 23 | -------------------------------------------------------------------------------- /make/input/19_l_shape_42bp.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 21 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 12 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -31.0286 -31.0286 0.0000 11 | -12.9286 -31.0286 0.0000 12 | 5.1714 -31.0286 0.0000 13 | 23.2714 -31.0286 0.0000 14 | 41.3714 -31.0286 0.0000 15 | -31.0286 -12.9286 0.0000 16 | -12.9286 -12.9286 0.0000 17 | 5.1714 -12.9286 0.0000 18 | 23.2714 -12.9286 0.0000 19 | 41.3714 -12.9286 0.0000 20 | -31.0286 5.1714 0.0000 21 | -12.9286 5.1714 0.0000 22 | 5.1714 5.1714 0.0000 23 | 23.2714 5.1714 0.0000 24 | 41.3714 5.1714 0.0000 25 | -31.0286 23.2714 0.0000 26 | -12.9286 23.2714 0.0000 27 | 5.1714 23.2714 0.0000 28 | -31.0286 41.3714 0.0000 29 | -12.9286 41.3714 0.0000 30 | 5.1714 41.3714 0.0000 31 | 4 0 1 6 5 32 | 4 1 2 7 6 33 | 4 2 3 8 7 34 | 4 3 4 9 8 35 | 4 5 6 11 10 36 | 4 6 7 12 11 37 | 4 7 8 13 12 38 | 4 8 9 14 13 39 | 4 10 11 16 15 40 | 4 11 12 17 16 41 | 4 15 16 19 18 42 | 4 16 17 20 19 43 | -------------------------------------------------------------------------------- /make/input/20_l_shape_63bp.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 21 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 12 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -31.0286 -31.0286 0.0000 11 | -12.9286 -31.0286 0.0000 12 | 5.1714 -31.0286 0.0000 13 | 23.2714 -31.0286 0.0000 14 | 41.3714 -31.0286 0.0000 15 | -31.0286 -12.9286 0.0000 16 | -12.9286 -12.9286 0.0000 17 | 5.1714 -12.9286 0.0000 18 | 23.2714 -12.9286 0.0000 19 | 41.3714 -12.9286 0.0000 20 | -31.0286 5.1714 0.0000 21 | -12.9286 5.1714 0.0000 22 | 5.1714 5.1714 0.0000 23 | 23.2714 5.1714 0.0000 24 | 41.3714 5.1714 0.0000 25 | -31.0286 23.2714 0.0000 26 | -12.9286 23.2714 0.0000 27 | 5.1714 23.2714 0.0000 28 | -31.0286 41.3714 0.0000 29 | -12.9286 41.3714 0.0000 30 | 5.1714 41.3714 0.0000 31 | 4 0 1 6 5 32 | 4 1 2 7 6 33 | 4 2 3 8 7 34 | 4 3 4 9 8 35 | 4 5 6 11 10 36 | 4 6 7 12 11 37 | 4 7 8 13 12 38 | 4 8 9 14 13 39 | 4 10 11 16 15 40 | 4 11 12 17 16 41 | 4 15 16 19 18 42 | 4 16 17 20 19 43 | -------------------------------------------------------------------------------- /make/input/21_l_shape_84bp.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 21 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 12 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -31.0286 -31.0286 0.0000 11 | -12.9286 -31.0286 0.0000 12 | 5.1714 -31.0286 0.0000 13 | 23.2714 -31.0286 0.0000 14 | 41.3714 -31.0286 0.0000 15 | -31.0286 -12.9286 0.0000 16 | -12.9286 -12.9286 0.0000 17 | 5.1714 -12.9286 0.0000 18 | 23.2714 -12.9286 0.0000 19 | 41.3714 -12.9286 0.0000 20 | -31.0286 5.1714 0.0000 21 | -12.9286 5.1714 0.0000 22 | 5.1714 5.1714 0.0000 23 | 23.2714 5.1714 0.0000 24 | 41.3714 5.1714 0.0000 25 | -31.0286 23.2714 0.0000 26 | -12.9286 23.2714 0.0000 27 | 5.1714 23.2714 0.0000 28 | -31.0286 41.3714 0.0000 29 | -12.9286 41.3714 0.0000 30 | 5.1714 41.3714 0.0000 31 | 4 0 1 6 5 32 | 4 1 2 7 6 33 | 4 2 3 8 7 34 | 4 3 4 9 8 35 | 4 5 6 11 10 36 | 4 6 7 12 11 37 | 4 7 8 13 12 38 | 4 8 9 14 13 39 | 4 10 11 16 15 40 | 4 11 12 17 16 41 | 4 15 16 19 18 42 | 4 16 17 20 19 43 | -------------------------------------------------------------------------------- /make/input/22_curved_arm_qaud.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 21 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 12 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -53.8938 -53.6487 0.0000 11 | -33.7296 -53.6487 0.0000 12 | -13.5653 -53.6487 0.0000 13 | -50.2294 -25.8147 0.0000 14 | -30.7522 -31.0336 0.0000 15 | -11.2751 -36.2525 0.0000 16 | -39.4858 0.1225 0.0000 17 | -22.0231 -9.9596 0.0000 18 | -4.5604 -20.0417 0.0000 19 | -22.3953 22.3953 0.0000 20 | -8.1370 8.1370 0.0000 21 | 6.1212 -6.1212 0.0000 22 | -0.1225 39.4858 0.0000 23 | 9.9596 22.0231 0.0000 24 | 20.0417 4.5604 0.0000 25 | 25.8147 50.2294 0.0000 26 | 31.0336 30.7522 0.0000 27 | 36.2525 11.2751 0.0000 28 | 53.6487 53.8938 0.0000 29 | 53.6487 33.7296 0.0000 30 | 53.6487 13.5653 0.0000 31 | 4 0 1 4 3 32 | 4 1 2 5 4 33 | 4 3 4 7 6 34 | 4 4 5 8 7 35 | 4 6 7 10 9 36 | 4 7 8 11 10 37 | 4 9 10 13 12 38 | 4 10 11 14 13 39 | 4 12 13 16 15 40 | 4 13 14 17 16 41 | 4 15 16 19 18 42 | 4 16 17 20 19 43 | -------------------------------------------------------------------------------- /make/input/23_curved_arm_tri.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 21 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 24 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -75.3616 -75.0189 0.0000 11 | -47.1652 -75.0189 0.0000 12 | -18.9689 -75.0189 0.0000 13 | -70.2375 -36.0976 0.0000 14 | -43.0019 -43.3953 0.0000 15 | -15.7663 -50.6931 0.0000 16 | -55.2144 0.1713 0.0000 17 | -30.7957 -13.9269 0.0000 18 | -6.3769 -28.0250 0.0000 19 | -31.3162 31.3162 0.0000 20 | -11.3783 11.3783 0.0000 21 | 8.5595 -8.5595 0.0000 22 | -0.1713 55.2144 0.0000 23 | 13.9269 30.7957 0.0000 24 | 28.0250 6.3769 0.0000 25 | 36.0976 70.2375 0.0000 26 | 43.3953 43.0019 0.0000 27 | 50.6931 15.7663 0.0000 28 | 75.0189 75.3616 0.0000 29 | 75.0189 47.1652 0.0000 30 | 75.0189 18.9689 0.0000 31 | 3 0 4 3 32 | 3 0 1 4 33 | 3 1 5 4 34 | 3 1 2 5 35 | 3 3 7 6 36 | 3 3 4 7 37 | 3 4 8 7 38 | 3 4 5 8 39 | 3 6 10 9 40 | 3 6 7 10 41 | 3 7 11 10 42 | 3 7 8 11 43 | 3 9 13 12 44 | 3 9 10 13 45 | 3 10 14 13 46 | 3 10 11 14 47 | 3 12 16 15 48 | 3 12 13 16 49 | 3 13 17 16 50 | 3 13 14 17 51 | 3 15 19 18 52 | 3 15 16 19 53 | 3 16 20 19 54 | 3 16 17 20 55 | -------------------------------------------------------------------------------- /make/input/24_curved_arm_mix.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | element vertex 21 4 | property float32 x 5 | property float32 y 6 | property float32 z 7 | element face 24 8 | property list uint8 int32 vertex_indices 9 | end_header 10 | -64.6277 -64.3338 0.0000 11 | -40.4474 -64.3338 0.0000 12 | -16.2671 -64.3338 0.0000 13 | -60.2334 -30.9561 0.0000 14 | -36.8771 -37.2145 0.0000 15 | -13.5207 -43.4728 0.0000 16 | -47.3501 0.1469 0.0000 17 | -26.4094 -11.9432 0.0000 18 | -5.4686 -24.0334 0.0000 19 | -26.8557 26.8557 0.0000 20 | -9.7577 9.7577 0.0000 21 | 7.3404 -7.3404 0.0000 22 | -0.1469 47.3501 0.0000 23 | 11.9432 26.4094 0.0000 24 | 24.0334 5.4686 0.0000 25 | 30.9561 60.2334 0.0000 26 | 37.2145 36.8771 0.0000 27 | 43.4728 13.5207 0.0000 28 | 64.3338 64.6277 0.0000 29 | 64.3338 40.4474 0.0000 30 | 64.3338 16.2671 0.0000 31 | 3 0 4 3 32 | 3 0 1 4 33 | 3 1 2 4 34 | 3 2 5 4 35 | 3 3 4 6 36 | 3 4 7 6 37 | 3 4 8 7 38 | 3 4 5 8 39 | 3 6 10 9 40 | 3 6 7 10 41 | 3 7 8 10 42 | 3 8 11 10 43 | 3 9 10 12 44 | 3 10 13 12 45 | 3 10 14 13 46 | 3 10 11 14 47 | 3 12 16 15 48 | 3 12 13 16 49 | 3 13 14 16 50 | 3 14 17 16 51 | 3 15 16 18 52 | 3 16 19 18 53 | 3 16 20 19 54 | 3 16 17 20 55 | -------------------------------------------------------------------------------- /make/input/archive/bird.geo: -------------------------------------------------------------------------------- 1 | 12 0 7 2 | 1 465.5 82.5 3 | 2 512.5 127.5 4 | 3 425.5 137.5 5 | 4 321.5 135.5 6 | 5 377.5 207.5 7 | 6 274.5 73.5 8 | 7 226.5 295.5 9 | 8 168.5 208.5 10 | 9 82.5 78.5 11 | 10 43.5 16.5 12 | 11 1.5 72.5 13 | 12 122.5 412.5 14 | 1 3 1 3 2 15 | 2 4 1 4 5 3 16 | 3 4 6 8 5 4 17 | 4 3 5 8 7 18 | 5 4 6 10 9 8 19 | 6 3 9 11 8 20 | 7 3 8 12 7 -------------------------------------------------------------------------------- /make/input/archive/deformed.geo: -------------------------------------------------------------------------------- 1 | 25 56 0 2 | 1 -4000.0000 -4000.0000 3 | 2 -1798.3267 -4000.0000 4 | 3 404.3715 -4000.0000 5 | 4 2491.2746 -4000.0000 6 | 5 4579.2027 -4000.0000 7 | 6 -3420.1010 -1753.2258 8 | 7 -1419.0761 -1986.3597 9 | 8 640.6184 -2044.4804 10 | 9 2701.3377 -2129.4618 11 | 10 4700.3128 -2229.8509 12 | 11 -2812.3882 494.5732 13 | 12 -831.1177 59.6762 14 | 13 1151.1777 -87.9359 15 | 14 3184.5154 -209.8519 16 | 15 5218.8780 -458.6769 17 | 16 -2243.9480 2634.7206 18 | 17 -242.9231 2106.7369 19 | 18 1716.4028 1921.7102 20 | 19 3676.7536 1710.7828 21 | 20 5675.7287 1482.0753 22 | 21 -1171.5729 4775.8929 23 | 22 535.1685 4105.7120 24 | 23 2242.9348 3932.3811 25 | 24 4183.6871 3709.7579 26 | 25 6125.4642 3423.8525 27 | 1 1 7 28 | 2 7 6 29 | 3 6 1 30 | 4 1 2 31 | 5 2 7 32 | 6 2 3 33 | 7 3 7 34 | 8 3 8 35 | 9 8 7 36 | 10 3 9 37 | 11 9 8 38 | 12 3 4 39 | 13 4 9 40 | 14 4 5 41 | 15 5 9 42 | 16 5 10 43 | 17 10 9 44 | 18 7 11 45 | 19 11 6 46 | 20 7 12 47 | 21 12 11 48 | 22 7 13 49 | 23 13 12 50 | 24 8 13 51 | 25 9 13 52 | 26 9 14 53 | 27 14 13 54 | 28 9 15 55 | 29 15 14 56 | 30 10 15 57 | 31 11 17 58 | 32 17 16 59 | 33 16 11 60 | 34 12 17 61 | 35 13 17 62 | 36 13 18 63 | 37 18 17 64 | 38 13 19 65 | 39 19 18 66 | 40 14 19 67 | 41 15 19 68 | 42 15 20 69 | 43 20 19 70 | 44 17 21 71 | 45 21 16 72 | 46 17 22 73 | 47 22 21 74 | 48 17 23 75 | 49 23 22 76 | 50 18 23 77 | 51 19 23 78 | 52 19 24 79 | 53 24 23 80 | 54 19 25 81 | 55 25 24 82 | 56 20 25 83 | -------------------------------------------------------------------------------- /make/input/archive/flower1.geo: -------------------------------------------------------------------------------- 1 | 31 36 0 2 | 1 130.5 797.5 3 | 2 174.5 787.5 4 | 3 270.5 787.5 5 | 4 315.5 797.5 6 | 5 116.5 753.5 7 | 6 222.5 744.5 8 | 7 329.5 753.5 9 | 8 129.5 691.5 10 | 9 189.5 672.5 11 | 10 236.5 683.5 12 | 11 315.5 691.5 13 | 12 68.5 671.5 14 | 13 376.5 671.5 15 | 14 37.5 637.5 16 | 15 222.5 637.5 17 | 16 269.5 648.5 18 | 17 407.5 637.5 19 | 18 68.5 602.5 20 | 19 129.5 583.5 21 | 20 175.5 626.5 22 | 21 208.5 591.5 23 | 22 254.5 602.5 24 | 23 315.5 583.5 25 | 24 376.5 602.5 26 | 25 115.5 526.5 27 | 26 222.5 529.5 28 | 27 329.5 526.5 29 | 28 130.5 477.5 30 | 29 174.5 486.5 31 | 30 270.5 486.5 32 | 31 315.5 477.5 33 | 1 1 5 34 | 2 5 8 35 | 3 8 12 36 | 4 12 14 37 | 5 14 18 38 | 6 18 19 39 | 7 19 25 40 | 8 25 28 41 | 9 28 29 42 | 10 29 26 43 | 11 26 30 44 | 12 30 31 45 | 13 31 27 46 | 14 27 23 47 | 15 23 24 48 | 16 24 17 49 | 17 17 13 50 | 18 13 11 51 | 19 11 7 52 | 20 7 4 53 | 21 4 3 54 | 22 3 6 55 | 23 6 2 56 | 24 2 1 57 | 25 8 9 58 | 26 9 15 59 | 27 19 20 60 | 28 20 15 61 | 29 26 21 62 | 30 21 15 63 | 31 22 23 64 | 32 22 15 65 | 33 16 11 66 | 34 15 16 67 | 35 6 10 68 | 36 10 15 -------------------------------------------------------------------------------- /make/input/archive/flower2.geo: -------------------------------------------------------------------------------- 1 | 36 48 0 2 | 1 121.593 364.984 3 | 2 178.323 357.292 4 | 3 235.054 333.253 5 | 4 290.823 357.292 6 | 5 346.593 364.984 7 | 6 140.823 295.753 8 | 7 188.9 278.445 9 | 8 279.285 278.445 10 | 9 327.362 295.753 11 | 10 61.496 251.522 12 | 11 111.977 240.945 13 | 12 200.246 223.945 14 | 13 267.939 223.945 15 | 14 356.208 240.945 16 | 15 406.689 251.522 17 | 16 38.9 206.33 18 | 17 84.093 210.176 19 | 18 175.439 183.253 20 | 19 234.093 182.292 21 | 20 292.746 183.253 22 | 21 384.093 210.176 23 | 22 429.285 206.33 24 | 23 74.477 117.868 25 | 24 119.67 137.099 26 | 25 139.862 164.022 27 | 26 205.054 149.984 28 | 27 233.131 118.83 29 | 28 263.131 149.984 30 | 29 328.323 164.022 31 | 30 348.516 137.099 32 | 31 393.708 117.868 33 | 32 136.016 84.215 34 | 33 195.631 108.253 35 | 34 235.054 56.33 36 | 35 272.554 108.253 37 | 36 332.17 84.215 38 | 1 1 6 39 | 2 6 10 40 | 3 10 16 41 | 4 16 17 42 | 5 17 23 43 | 6 23 24 44 | 7 24 32 45 | 8 32 33 46 | 9 33 34 47 | 10 34 35 48 | 11 35 36 49 | 12 36 30 50 | 13 30 31 51 | 14 31 21 52 | 15 21 22 53 | 16 22 15 54 | 17 15 9 55 | 18 9 5 56 | 19 5 4 57 | 20 4 3 58 | 21 3 2 59 | 22 2 1 60 | 23 11 17 61 | 24 24 25 62 | 25 26 33 63 | 26 28 35 64 | 27 29 30 65 | 28 14 21 66 | 29 3 6 67 | 30 6 11 68 | 31 11 25 69 | 32 25 18 70 | 33 18 26 71 | 34 26 27 72 | 35 27 28 73 | 36 28 20 74 | 37 20 29 75 | 38 29 14 76 | 39 14 9 77 | 40 3 9 78 | 41 12 18 79 | 42 13 20 80 | 43 12 19 81 | 44 19 13 82 | 45 13 8 83 | 46 8 3 84 | 47 3 7 85 | 48 7 12 86 | -------------------------------------------------------------------------------- /make/input/archive/henrik1.geo: -------------------------------------------------------------------------------- 1 | 25 44 0 2 | 1 0 0 3 | 2 0 1 4 | 3 0 2 5 | 4 0 3 6 | 5 0 4 7 | 6 1 0 8 | 7 1 1 9 | 8 1 2 10 | 9 1 3 11 | 10 1 4 12 | 11 2 0 13 | 12 2 1 14 | 13 2 2 15 | 14 2 3 16 | 15 2 4 17 | 16 3 0 18 | 17 3 1 19 | 18 3 2 20 | 19 3 3 21 | 20 3 4 22 | 21 4 0 23 | 22 4 1 24 | 23 4 2 25 | 24 4 3 26 | 25 4 4 27 | 1 1 6 28 | 2 1 2 29 | 3 2 7 30 | 4 2 3 31 | 5 3 8 32 | 6 3 4 33 | 7 4 9 34 | 8 4 5 35 | 9 5 10 36 | 10 6 11 37 | 11 6 7 38 | 12 7 8 39 | 13 7 11 40 | 14 7 3 41 | 15 7 1 42 | 16 8 9 43 | 17 9 14 44 | 18 9 10 45 | 19 9 15 46 | 20 9 5 47 | 21 9 3 48 | 22 10 15 49 | 23 11 16 50 | 24 11 12 51 | 25 12 17 52 | 26 12 13 53 | 27 13 18 54 | 28 13 14 55 | 29 14 19 56 | 30 14 15 57 | 31 15 20 58 | 32 16 21 59 | 33 17 18 60 | 34 17 23 61 | 35 17 13 62 | 36 17 11 63 | 37 19 24 64 | 38 19 20 65 | 39 19 15 66 | 40 20 25 67 | 41 21 22 68 | 42 22 23 69 | 43 23 24 70 | 44 24 25 71 | 72 | 43 73 | 1 6 74 | 1 2 75 | 2 7 76 | 2 3 77 | 3 4 78 | 4 9 79 | 4 5 80 | 5 10 81 | 6 11 82 | 6 7 83 | 7 8 84 | 7 13 85 | 7 11 86 | 7 3 87 | 8 13 88 | 8 9 89 | 9 14 90 | 9 15 91 | 9 3 92 | 10 15 93 | 11 16 94 | 12 17 95 | 12 13 96 | 13 18 97 | 13 14 98 | 14 19 99 | 15 20 100 | 16 21 101 | 17 18 102 | 17 23 103 | 17 13 104 | 17 11 105 | 19 24 106 | 19 20 107 | 19 25 108 | 19 23 109 | 19 15 110 | 19 13 111 | 20 25 112 | 21 22 113 | 22 23 114 | 23 24 115 | 24 25 -------------------------------------------------------------------------------- /make/input/archive/henrik2.geo: -------------------------------------------------------------------------------- 1 | 25 43 0 2 | 1 0 0 3 | 2 0 1 4 | 3 0 2 5 | 4 0 3 6 | 5 0 4 7 | 6 1 0 8 | 7 1 1 9 | 8 1 2 10 | 9 1 3 11 | 10 1 4 12 | 11 2 0 13 | 12 2 1 14 | 13 2 2 15 | 14 2 3 16 | 15 2 4 17 | 16 3 0 18 | 17 3 1 19 | 18 3 2 20 | 19 3 3 21 | 20 3 4 22 | 21 4 0 23 | 22 4 1 24 | 23 4 2 25 | 24 4 3 26 | 25 4 4 27 | 1 1 6 28 | 2 1 2 29 | 3 2 7 30 | 4 2 3 31 | 5 3 4 32 | 6 4 9 33 | 7 4 5 34 | 8 5 10 35 | 9 6 11 36 | 10 6 7 37 | 11 7 8 38 | 12 7 13 39 | 13 7 11 40 | 14 7 3 41 | 15 8 13 42 | 16 8 9 43 | 17 9 14 44 | 18 9 15 45 | 19 9 3 46 | 20 10 15 47 | 21 11 16 48 | 22 12 17 49 | 23 12 13 50 | 24 13 18 51 | 25 13 14 52 | 26 14 19 53 | 27 15 20 54 | 28 16 21 55 | 29 17 18 56 | 30 17 23 57 | 31 17 13 58 | 32 17 11 59 | 33 19 24 60 | 34 19 20 61 | 35 19 25 62 | 36 19 23 63 | 37 19 15 64 | 38 19 13 65 | 39 20 25 66 | 40 21 22 67 | 41 22 23 68 | 42 23 24 69 | 43 24 25 -------------------------------------------------------------------------------- /make/input/archive/pentagon.geo: -------------------------------------------------------------------------------- 1 | 5 10 0 2 | 1 0 -1 3 | 2 0.95105651629 -0.30901699437 4 | 4 0.58778525229 0.80901699437 5 | 5 -0.58778525229 0.80901699437 6 | 6 -0.95105651629 -0.30901699437 7 | 1 1 4 8 | 2 1 3 9 | 3 2 5 10 | 4 2 4 11 | 5 3 5 12 | 6 1 2 13 | 7 2 3 14 | 8 3 4 15 | 9 4 5 16 | 10 1 5 -------------------------------------------------------------------------------- /make/input/archive/square.igs: -------------------------------------------------------------------------------- 1 | S0000001 2 | ,,31HOpen CASCADE IGES processor 6.8,13HFilename.iges, G0000001 3 | 16HOpen CASCADE 6.8,31HOpen CASCADE IGES processor 6.8,32,308,15,308,15,G0000002 4 | ,1.,2,2HMM,1,0.01,15H20170531.105958,1E-007,2.003333,,,11,0, G0000003 5 | 15H20170531.105958,; G0000004 6 | 402 1 0 0 0 0 0 000000000D0000001 7 | 402 0 0 1 1 0D0000002 8 | 110 2 0 0 0 0 0 000020000D0000003 9 | 110 0 0 1 0 0D0000004 10 | 110 3 0 0 0 0 0 000020000D0000005 11 | 110 0 0 1 0 0D0000006 12 | 110 4 0 0 0 0 0 000020000D0000007 13 | 110 0 0 1 0 0D0000008 14 | 110 5 0 0 0 0 0 000020000D0000009 15 | 110 0 0 1 0 0D0000010 16 | 110 6 0 0 0 0 0 000020000D0000011 17 | 110 0 0 1 0 0D0000012 18 | 110 7 0 0 0 0 0 000020000D0000013 19 | 110 0 0 2 0 0D0000014 20 | 110 9 0 0 0 0 0 000020000D0000015 21 | 110 0 0 1 0 0D0000016 22 | 110 10 0 0 0 0 0 000020000D0000017 23 | 110 0 0 1 0 0D0000018 24 | 110 11 0 0 0 0 0 000020000D0000019 25 | 110 0 0 1 0 0D0000020 26 | 110 12 0 0 0 0 0 000020000D0000021 27 | 110 0 0 1 0 0D0000022 28 | 402,10,3,5,7,9,11,13,15,17,19,21; 0000001P0000001 29 | 110,1.,1.,0.E+000,1.,-1.,0.E+000; 0000003P0000002 30 | 110,-2.,1.,0.E+000,1.,1.,0.E+000; 0000005P0000003 31 | 110,-2.,-1.,0.E+000,1.,-1.,0.E+000; 0000007P0000004 32 | 110,-0.5,-3.061616998E-017,0.E+000,1.,6.123233996E-017,0.E+000; 0000009P0000005 33 | 110,-0.5,-2.526607749E-016,0.E+000,-0.5,-1.,0.E+000; 0000011P0000006 34 | 110,-0.5,-3.061616998E-017,0.E+000,-2.,-1.224646799E-016, 0000013P0000007 35 | 0.E+000; 0000013P0000008 36 | 110,-2.,-1.,0.E+000,1.,1.,0.E+000; 0000015P0000009 37 | 110,-0.5,-2.526607749E-016,0.E+000,-0.5,1.,0.E+000; 0000017P0000010 38 | 110,-2.,1.,0.E+000,-2.,-1.,0.E+000; 0000019P0000011 39 | 110,-2.,1.,0.E+000,1.,-1.,0.E+000; 0000021P0000012 40 | S 1G 4D 22P 12 T0000001 41 | -------------------------------------------------------------------------------- /make/input/archive/square1.geo: -------------------------------------------------------------------------------- 1 | 12 6 0 2 | 1 1 0 3 | 2 2 0 4 | 3 3 0 5 | 4 1 4 6 | 5 2 4 7 | 6 3 4 8 | 7 0 1 9 | 8 0 2 10 | 9 0 3 11 | 10 4 1 12 | 11 4 2 13 | 12 4 3 14 | 1 1 4 15 | 2 2 5 16 | 3 3 6 17 | 4 7 10 18 | 5 8 11 19 | 6 9 12 -------------------------------------------------------------------------------- /make/input/archive/square2.geo: -------------------------------------------------------------------------------- 1 | 12 13 0 2 | 1 -1 -1 3 | 2 1 -1 4 | 3 -1 1 5 | 4 1 1 6 | 1 -1.5 -1.5 7 | 2 0.5 -1.5 8 | 3 -1.5 0.5 9 | 4 0.5 0.5 10 | 1 -0.5 -0.5 11 | 2 1.5 -0.5 12 | 3 -0.5 1.5 13 | 4 1.5 1.5 14 | 1 1 2 15 | 2 3 4 16 | 3 1 3 17 | 4 2 4 18 | 1 5 6 19 | 2 7 8 20 | 3 5 7 21 | 4 6 8 22 | 1 9 10 23 | 2 11 12 24 | 3 9 11 25 | 4 10 12 26 | 4 12 5 -------------------------------------------------------------------------------- /make/input/archive/star1.geo: -------------------------------------------------------------------------------- 1 | 6 6 0 2 | 1 4 0 3 | 2 1 2 4 | 3 7 2 5 | 4 1 5 6 | 5 7 5 7 | 6 4 7 8 | 1 1 5 9 | 2 1 4 10 | 3 2 3 11 | 4 2 6 12 | 5 3 6 13 | 6 4 5 -------------------------------------------------------------------------------- /make/input/archive/star2.geo: -------------------------------------------------------------------------------- 1 | 6 9 0 2 | 1 4 0 3 | 2 1 2 4 | 3 7 2 5 | 4 1 5 6 | 5 7 5 7 | 6 4 7 8 | 1 1 5 9 | 2 1 4 10 | 3 2 3 11 | 4 2 6 12 | 5 3 6 13 | 6 4 5 14 | 7 1 6 15 | 8 2 5 16 | 9 3 4 -------------------------------------------------------------------------------- /make/input/archive/test_1.geo: -------------------------------------------------------------------------------- 1 | 4 4 0 2 | 1 0.0 0.0 3 | 2 1.0 0.0 4 | 3 1.0 1.0 5 | 4 0.0 1.0 6 | 1 1 2 7 | 2 2 3 8 | 3 3 4 9 | 4 4 1 10 | -------------------------------------------------------------------------------- /make/input/archive/test_1.iges: -------------------------------------------------------------------------------- 1 | S0000001 2 | ,,31HOpen CASCADE IGES processor 6.8,13HFilename.iges, G0000001 3 | 16HOpen CASCADE 6.8,31HOpen CASCADE IGES processor 6.8,32,308,15,308,15,G0000002 4 | ,1.,2,2HMM,1,0.01,15H20180326.143940,1E-007,3.206589,,,11,0, G0000003 5 | 15H20180326.143940,; G0000004 6 | 402 1 0 0 0 0 0 000000000D0000001 7 | 402 0 0 1 1 0D0000002 8 | 110 2 0 0 0 0 0 000020000D0000003 9 | 110 0 0 2 0 0D0000004 10 | 110 4 0 0 0 0 0 000020000D0000005 11 | 110 0 0 2 0 0D0000006 12 | 110 6 0 0 0 0 0 000020000D0000007 13 | 110 0 0 2 0 0D0000008 14 | 110 8 0 0 0 0 0 000020000D0000009 15 | 110 0 0 1 0 0D0000010 16 | 110 9 0 0 0 0 0 000020000D0000011 17 | 110 0 0 2 0 0D0000012 18 | 110 11 0 0 0 0 0 000020000D0000013 19 | 110 0 0 2 0 0D0000014 20 | 110 13 0 0 0 0 0 000020000D0000015 21 | 110 0 0 1 0 0D0000016 22 | 402,7,3,5,7,9,11,13,15; 0000001P0000001 23 | 110,-3.031741828E-002,-0.717301607,0.E+000,1.432535291, 0000003P0000002 24 | -1.562224865,0.E+000; 0000003P0000003 25 | 110,1.432535291,-1.562224865,0.E+000,1.243373156,0.594221234, 0000005P0000004 26 | 0.E+000; 0000005P0000005 27 | 110,-3.031686783,-0.452474892,0.E+000,1.533421397,2.422786713, 0000007P0000006 28 | 0.E+000; 0000007P0000007 29 | 110,1.533421397,2.422786713,0.E+000,3.,0.E+000,0.E+000; 0000009P0000008 30 | 110,-3.031686783,-0.452474892,0.E+000,0.587611735,-3.201628447, 0000011P0000009 31 | 0.E+000; 0000011P0000010 32 | 110,0.587611735,-3.201628447,0.E+000,-3.031741828E-002, 0000013P0000011 33 | -0.717301607,0.E+000; 0000013P0000012 34 | 110,3.,1.836970199E-016,0.E+000,1.243373156,0.594221234,0.E+000; 0000015P0000013 35 | S 1G 4D 16P 13 T0000001 36 | -------------------------------------------------------------------------------- /make/input/archive/test_2.geo: -------------------------------------------------------------------------------- 1 | 8 4 0 2 | 1 1.0 0.0 3 | 2 2.0 0.0 4 | 3 3.0 1.0 5 | 4 4.0 2.0 6 | 5 2.0 3.0 7 | 6 1.0 3.0 8 | 7 0.0 2.0 9 | 8 0.0 1.0 10 | 1 1 6 11 | 2 2 5 12 | 3 3 8 13 | 4 4 7 14 | -------------------------------------------------------------------------------- /make/input/archive/test_2.iges: -------------------------------------------------------------------------------- 1 | S0000001 2 | ,,31HOpen CASCADE IGES processor 6.8,13HFilename.iges, G0000001 3 | 16HOpen CASCADE 6.8,31HOpen CASCADE IGES processor 6.8,32,308,15,308,15,G0000002 4 | ,1.,2,2HMM,1,0.01,15H20180326.143940,1E-007,1.198009,,,11,0, G0000003 5 | 15H20180326.143940,; G0000004 6 | 402 1 0 0 0 0 0 000000000D0000001 7 | 402 0 0 1 1 0D0000002 8 | 110 2 0 0 0 0 0 000020000D0000003 9 | 110 0 0 2 0 0D0000004 10 | 110 4 0 0 0 0 0 000020000D0000005 11 | 110 0 0 2 0 0D0000006 12 | 110 6 0 0 0 0 0 000020000D0000007 13 | 110 0 0 2 0 0D0000008 14 | 110 8 0 0 0 0 0 000020000D0000009 15 | 110 0 0 2 0 0D0000010 16 | 110 10 0 0 0 0 0 000020000D0000011 17 | 110 0 0 2 0 0D0000012 18 | 402,5,3,5,7,9,11; 0000001P0000001 19 | 110,-1.162356138,-0.598586798,0.E+000,-0.796562016,-0.517299235, 0000003P0000002 20 | 0.E+000; 0000003P0000003 21 | 110,-1.022020102,-0.331718147,0.E+000,-0.821101725,-0.696745396, 0000005P0000004 22 | 0.E+000; 0000005P0000005 23 | 110,-1.188429475,-0.449048311,0.E+000,-0.906223595,-0.375429392, 0000007P0000006 24 | 0.E+000; 0000007P0000007 25 | 110,-1.197631955,-0.362392694,0.E+000,-1.00131464,-0.662236512, 0000009P0000008 26 | 0.E+000; 0000009P0000009 27 | 110,-1.022020102,-0.331718147,0.E+000,-1.00131464,-0.662236512, 0000011P0000010 28 | 0.E+000; 0000011P0000011 29 | S 1G 4D 12P 11 T0000001 30 | -------------------------------------------------------------------------------- /make/input/boundary_1.iges: -------------------------------------------------------------------------------- 1 | S0000001 2 | ,,31HOpen CASCADE IGES processor 6.8,13HFilename.iges, G0000001 3 | 16HOpen CASCADE 6.8,31HOpen CASCADE IGES processor 6.8,32,308,15,308,15,G0000002 4 | ,1.,2,2HMM,1,0.01,15H20180326.143940,1E-007,3.206589,,,11,0, G0000003 5 | 15H20180326.143940,; G0000004 6 | 402 1 0 0 0 0 0 000000000D0000001 7 | 402 0 0 1 1 0D0000002 8 | 110 2 0 0 0 0 0 000020000D0000003 9 | 110 0 0 2 0 0D0000004 10 | 110 4 0 0 0 0 0 000020000D0000005 11 | 110 0 0 2 0 0D0000006 12 | 110 6 0 0 0 0 0 000020000D0000007 13 | 110 0 0 2 0 0D0000008 14 | 110 8 0 0 0 0 0 000020000D0000009 15 | 110 0 0 1 0 0D0000010 16 | 110 9 0 0 0 0 0 000020000D0000011 17 | 110 0 0 2 0 0D0000012 18 | 110 11 0 0 0 0 0 000020000D0000013 19 | 110 0 0 2 0 0D0000014 20 | 110 13 0 0 0 0 0 000020000D0000015 21 | 110 0 0 1 0 0D0000016 22 | 402,7,3,5,7,9,11,13,15; 0000001P0000001 23 | 110,-3.031741828E-002,-0.717301607,0.E+000,1.432535291, 0000003P0000002 24 | -1.562224865,0.E+000; 0000003P0000003 25 | 110,1.432535291,-1.562224865,0.E+000,1.243373156,0.594221234, 0000005P0000004 26 | 0.E+000; 0000005P0000005 27 | 110,-3.031686783,-0.452474892,0.E+000,1.533421397,2.422786713, 0000007P0000006 28 | 0.E+000; 0000007P0000007 29 | 110,1.533421397,2.422786713,0.E+000,3.,0.E+000,0.E+000; 0000009P0000008 30 | 110,-3.031686783,-0.452474892,0.E+000,0.587611735,-3.201628447, 0000011P0000009 31 | 0.E+000; 0000011P0000010 32 | 110,0.587611735,-3.201628447,0.E+000,-3.031741828E-002, 0000013P0000011 33 | -0.717301607,0.E+000; 0000013P0000012 34 | 110,3.,1.836970199E-016,0.E+000,1.243373156,0.594221234,0.E+000; 0000015P0000013 35 | S 1G 4D 16P 13 T0000001 36 | -------------------------------------------------------------------------------- /make/input/boundary_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/input/boundary_1.jpg -------------------------------------------------------------------------------- /make/input/boundary_2.iges: -------------------------------------------------------------------------------- 1 | S0000001 2 | ,,31HOpen CASCADE IGES processor 7.2,13HFilename.iges, G0000001 3 | 16HOpen CASCADE 7.2,31HOpen CASCADE IGES processor 7.2,32,308,15,308,15,G0000002 4 | ,1.,2,2HMM,1,0.01,15H20180512.142413,1E-007,12.053333,,,11,0, G0000003 5 | 15H20180512.142413,; G0000004 6 | 102 1 0 0 0 0 0 000000000D0000001 7 | 102 0 0 1 0 0D0000002 8 | 110 2 0 0 0 0 0 000010000D0000003 9 | 110 0 0 1 0 0D0000004 10 | 110 3 0 0 0 0 0 000010000D0000005 11 | 110 0 0 1 0 0D0000006 12 | 110 4 0 0 0 0 0 000010000D0000007 13 | 110 0 0 1 0 0D0000008 14 | 110 5 0 0 0 0 0 000010000D0000009 15 | 110 0 0 1 0 0D0000010 16 | 110 6 0 0 0 0 0 000010000D0000011 17 | 110 0 0 1 0 0D0000012 18 | 110 7 0 0 0 0 0 000010000D0000013 19 | 110 0 0 1 0 0D0000014 20 | 110 8 0 0 0 0 0 000010000D0000015 21 | 110 0 0 1 0 0D0000016 22 | 110 9 0 0 0 0 0 000010000D0000017 23 | 110 0 0 1 0 0D0000018 24 | 110 10 0 0 0 0 0 000010000D0000019 25 | 110 0 0 1 0 0D0000020 26 | 110 11 0 0 0 0 0 000010000D0000021 27 | 110 0 0 1 0 0D0000022 28 | 110 12 0 0 0 0 0 000010000D0000023 29 | 110 0 0 1 0 0D0000024 30 | 110 13 0 0 0 0 0 000010000D0000025 31 | 110 0 0 1 0 0D0000026 32 | 110 14 0 0 0 0 0 000010000D0000027 33 | 110 0 0 1 0 0D0000028 34 | 110 15 0 0 0 0 0 000010000D0000029 35 | 110 0 0 1 0 0D0000030 36 | 110 16 0 0 0 0 0 000010000D0000031 37 | 110 0 0 1 0 0D0000032 38 | 110 17 0 0 0 0 0 000010000D0000033 39 | 110 0 0 1 0 0D0000034 40 | 102,16,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33; 0000001P0000001 41 | 110,0.E+000,4.,0.E+000,4.,4.,0.E+000; 0000003P0000002 42 | 110,4.,4.,0.E+000,4.,0.E+000,0.E+000; 0000005P0000003 43 | 110,4.,0.E+000,0.E+000,0.E+000,-4.,0.E+000; 0000007P0000004 44 | 110,0.E+000,-4.,0.E+000,4.,-8.,0.E+000; 0000009P0000005 45 | 110,4.,-8.,0.E+000,4.,-12.,0.E+000; 0000011P0000006 46 | 110,4.,-12.,0.E+000,0.E+000,-12.,0.E+000; 0000013P0000007 47 | 110,0.E+000,-12.,0.E+000,-4.,-8.,0.E+000; 0000015P0000008 48 | 110,-4.,-8.,0.E+000,-8.,-12.,0.E+000; 0000017P0000009 49 | 110,-8.,-12.,0.E+000,-12.,-12.,0.E+000; 0000019P0000010 50 | 110,-12.,-12.,0.E+000,-12.,-8.,0.E+000; 0000021P0000011 51 | 110,-12.,-8.,0.E+000,-8.,-4.,0.E+000; 0000023P0000012 52 | 110,-8.,-4.,0.E+000,-12.,0.E+000,0.E+000; 0000025P0000013 53 | 110,-12.,0.E+000,0.E+000,-12.,4.,0.E+000; 0000027P0000014 54 | 110,-12.,4.,0.E+000,-8.,4.,0.E+000; 0000029P0000015 55 | 110,-8.,4.,0.E+000,-4.,0.E+000,0.E+000; 0000031P0000016 56 | 110,-4.,0.E+000,0.E+000,0.E+000,4.,0.E+000; 0000033P0000017 57 | S 1G 4D 34P 17 T0000001 58 | -------------------------------------------------------------------------------- /make/input/boundary_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/input/boundary_2.jpg -------------------------------------------------------------------------------- /make/input/boundary_3.geo: -------------------------------------------------------------------------------- 1 | 4 4 0 2 | 1 0.0 0.0 3 | 2 1.0 0.0 4 | 3 1.0 1.0 5 | 4 0.0 1.0 6 | 1 1 2 7 | 2 2 3 8 | 3 3 4 9 | 4 4 1 10 | -------------------------------------------------------------------------------- /make/input/internal_1.iges: -------------------------------------------------------------------------------- 1 | S0000001 2 | ,,31HOpen CASCADE IGES processor 6.8,13HFilename.iges, G0000001 3 | 16HOpen CASCADE 6.8,31HOpen CASCADE IGES processor 6.8,32,308,15,308,15,G0000002 4 | ,1.,2,2HMM,1,0.01,15H20180427.222825,1E-007,1.188098,,,11,0, G0000003 5 | 15H20180427.222825,; G0000004 6 | 402 1 0 0 0 0 0 000000000D0000001 7 | 402 0 0 1 1 0D0000002 8 | 110 2 0 0 0 0 0 000020000D0000003 9 | 110 0 0 2 0 0D0000004 10 | 110 4 0 0 0 0 0 000020000D0000005 11 | 110 0 0 2 0 0D0000006 12 | 110 6 0 0 0 0 0 000020000D0000007 13 | 110 0 0 2 0 0D0000008 14 | 110 8 0 0 0 0 0 000020000D0000009 15 | 110 0 0 2 0 0D0000010 16 | 110 10 0 0 0 0 0 000020000D0000011 17 | 110 0 0 2 0 0D0000012 18 | 110 12 0 0 0 0 0 000020000D0000013 19 | 110 0 0 2 0 0D0000014 20 | 110 14 0 0 0 0 0 000020000D0000015 21 | 110 0 0 2 0 0D0000016 22 | 110 16 0 0 0 0 0 000020000D0000017 23 | 110 0 0 2 0 0D0000018 24 | 110 18 0 0 0 0 0 000020000D0000019 25 | 110 0 0 2 0 0D0000020 26 | 110 20 0 0 0 0 0 000020000D0000021 27 | 110 0 0 2 0 0D0000022 28 | 110 22 0 0 0 0 0 000020000D0000023 29 | 110 0 0 2 0 0D0000024 30 | 402,11,3,5,7,9,11,13,15,17,19,21,23; 0000001P0000001 31 | 110,-0.857903659,-0.341595918,0.E+000,-0.801864862,-0.64077121, 0000003P0000002 32 | 0.E+000; 0000003P0000003 33 | 110,-1.017885685,-0.370519191,0.E+000,-0.957327545,-0.686867714, 0000005P0000004 34 | 0.E+000; 0000005P0000005 35 | 110,-1.173348308,-0.514231801,0.E+000,-0.800057054,-0.505193293, 0000007P0000006 36 | 0.E+000; 0000007P0000007 37 | 110,-1.160694361,-0.376846164,0.E+000,-1.140809655,-0.686867714, 0000009P0000008 38 | 0.E+000; 0000009P0000009 39 | 110,-1.187809944,-0.41390413,0.E+000,-0.826268852,-0.383173138, 0000011P0000010 40 | 0.E+000; 0000011P0000011 41 | 110,-1.184194565,-0.477173835,0.E+000,-0.816326439,-0.433788896, 0000013P0000012 42 | 0.E+000; 0000013P0000013 43 | 110,-1.179675341,-0.631732702,0.E+000,-0.789210916,-0.590155423, 0000015P0000014 44 | 0.E+000; 0000015P0000015 45 | 110,-1.111886382,-0.384076983,0.E+000,-1.0811553,-0.679636896, 0000017P0000016 46 | 0.E+000; 0000017P0000017 47 | 110,-0.913038671,-0.646194339,0.E+000,-0.946481228,-0.356057525, 0000019P0000018 48 | 0.E+000; 0000019P0000019 49 | 110,-1.072116852,-0.368711501,0.E+000,-1.007039428,-0.688675404, 0000021P0000020 50 | 0.E+000; 0000021P0000021 51 | 110,-1.180579185,-0.563943684,0.E+000,-0.79373008,-0.548578203, 0000023P0000022 52 | 0.E+000; 0000023P0000023 53 | S 1G 4D 24P 23 T0000001 54 | -------------------------------------------------------------------------------- /make/input/internal_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/input/internal_1.jpg -------------------------------------------------------------------------------- /make/input/internal_2.iges: -------------------------------------------------------------------------------- 1 | S0000001 2 | ,,31HOpen CASCADE IGES processor 7.2,13HFilename.iges, G0000001 3 | 16HOpen CASCADE 7.2,31HOpen CASCADE IGES processor 7.2,32,308,15,308,15,G0000002 4 | ,1.,2,2HMM,1,0.01,15H20180512.142045,1E-007,20.066667,,,11,0, G0000003 5 | 15H20180512.142045,; G0000004 6 | 402 1 0 0 0 0 0 000000000D0000001 7 | 402 0 0 1 1 0D0000002 8 | 102 2 0 0 0 0 0 000020000D0000003 9 | 102 0 0 1 0 0D0000004 10 | 110 3 0 0 0 0 0 000010000D0000005 11 | 110 0 0 1 0 0D0000006 12 | 110 4 0 0 0 0 0 000010000D0000007 13 | 110 0 0 1 0 0D0000008 14 | 110 5 0 0 0 0 0 000010000D0000009 15 | 110 0 0 1 0 0D0000010 16 | 110 6 0 0 0 0 0 000010000D0000011 17 | 110 0 0 1 0 0D0000012 18 | 110 7 0 0 0 0 0 000010000D0000013 19 | 110 0 0 1 0 0D0000014 20 | 110 8 0 0 0 0 0 000020000D0000015 21 | 110 0 0 1 0 0D0000016 22 | 110 9 0 0 0 0 0 000020000D0000017 23 | 110 0 0 1 0 0D0000018 24 | 110 10 0 0 0 0 0 000020000D0000019 25 | 110 0 0 1 0 0D0000020 26 | 110 11 0 0 0 0 0 000020000D0000021 27 | 110 0 0 1 0 0D0000022 28 | 110 12 0 0 0 0 0 000020000D0000023 29 | 110 0 0 1 0 0D0000024 30 | 402,6,3,15,17,19,21,23; 0000001P0000001 31 | 102,5,5,7,9,11,13; 0000003P0000002 32 | 110,0.E+000,20.,0.E+000,-6.,0.E+000,0.E+000; 0000005P0000003 33 | 110,-6.,0.E+000,0.E+000,10.,12.,0.E+000; 0000007P0000004 34 | 110,10.,12.,0.E+000,-10.,12.,0.E+000; 0000009P0000005 35 | 110,-10.,12.,0.E+000,6.,0.E+000,0.E+000; 0000011P0000006 36 | 110,6.,0.E+000,0.E+000,-8.881784197E-016,20.,0.E+000; 0000013P0000007 37 | 110,6.,0.E+000,0.E+000,-6.,0.E+000,0.E+000; 0000015P0000008 38 | 110,-10.,12.,0.E+000,-6.,-1.776356839E-015,0.E+000; 0000017P0000009 39 | 110,10.,12.,0.E+000,6.,-1.776356839E-015,0.E+000; 0000019P0000010 40 | 110,10.,12.,0.E+000,0.E+000,20.,0.E+000; 0000021P0000011 41 | 110,-10.,12.,0.E+000,0.E+000,20.,0.E+000; 0000023P0000012 42 | S 1G 4D 24P 12 T0000001 43 | -------------------------------------------------------------------------------- /make/input/internal_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/input/internal_2.jpg -------------------------------------------------------------------------------- /make/input/internal_3.geo: -------------------------------------------------------------------------------- 1 | 5 10 0 2 | 1 0 -1 3 | 2 0.95105651629 -0.30901699437 4 | 4 0.58778525229 0.80901699437 5 | 5 -0.58778525229 0.80901699437 6 | 6 -0.95105651629 -0.30901699437 7 | 1 1 4 8 | 2 1 3 9 | 3 2 5 10 | 4 2 4 11 | 5 3 5 12 | 6 1 2 13 | 7 2 3 14 | 8 3 4 15 | 9 4 5 16 | 10 1 5 -------------------------------------------------------------------------------- /make/input/svg/bird.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /make/input/svg/liberty.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /make/input/svg/svg14.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /make/input/svg/svg3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | -------------------------------------------------------------------------------- /make/input/svg/svg4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | -------------------------------------------------------------------------------- /make/input/svg/svg5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /make/input/svg/svg7.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | -------------------------------------------------------------------------------- /make/input/svg/test.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /make/makefiles/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Makefiles for PERDIX, written by Hyungmin Jun 3 | # 4 | # -fast 5 | # Maximizes speed across the entire program. 6 | # Description: 7 | # This option maximizes speed across the entire program. 8 | # 9 | # It sets the following options: 10 | # - On Linux* systems: -ipo, -O3, -no-prec-div, -static, and -xHost 11 | # - On OS X* systems: -ipo, -mdynamic-no-pic, -O3, -no-prec-div, and -xHost 12 | # - On Windows* systems: /O3, /Qipo, /Qprec-div-, and /QxHost 13 | # 14 | # NOTE: Option fast sets some aggressive optimizations that may not be appropriate for all 15 | # applications. The resulting executable may not run on processor types different from the 16 | # one on which you compile. You should make sure that you understand the individual optimi- 17 | # zation options that are enabled by option fast. 18 | 19 | objects = Data_Bound.o Data_DNA.o Data_Geom.o Data_Mesh.o Data_Prob.o \ 20 | Para.o List.o Math.o Mani.o SpanTree.o Importer.o \ 21 | Exam_2D_Open.o \ 22 | 3_Section.o 1_Input.o 2_ModGeo.o 4_Basepair.o 5_Route.o \ 23 | 6_SeqDesign.o 7_Output.o PERDIX.o 24 | 25 | f90comp = ifort 26 | 27 | # Makefile 28 | PERDIX: $(objects) 29 | $(f90comp) -o PERDIX $(objects) 30 | 31 | Data_Bound.mod: Data_Bound.o Data_Bound.f90 32 | $(f90comp) -c Data_Bound.f90 33 | Data_Bound.o: Data_Bound.f90 34 | $(f90comp) -c Data_Bound.f90 35 | 36 | Data_DNA.mod: Data_DNA.o Data_DNA.f90 37 | $(f90comp) -c Data_DNA.f90 38 | Data_DNA.o: Data_DNA.f90 39 | $(f90comp) -c Data_DNA.f90 40 | 41 | Data_Geom.mod: Data_Geom.o Data_Geom.f90 42 | $(f90comp) -c Data_Geom.f90 43 | Data_Geom.o: Data_Geom.f90 44 | $(f90comp) -c Data_Geom.f90 45 | 46 | Data_Mesh.mod: Data_Mesh.o Data_Mesh.f90 47 | $(f90comp) -c Data_Mesh.f90 48 | Data_Mesh.o: Data_Mesh.f90 49 | $(f90comp) -c Data_Mesh.f90 50 | 51 | Data_Prob.mod: Data_Prob.o Data_Prob.f90 52 | $(f90comp) -c Data_Prob.f90 53 | Data_Prob.o: Data_Prob.f90 54 | $(f90comp) -c Data_Prob.f90 55 | 56 | Para.mod: Para.o Para.f90 57 | $(f90comp) -c Para.f90 58 | Para.o: Para.f90 59 | $(f90comp) -c Para.f90 60 | 61 | List.mod: List.o List.f90 62 | $(f90comp) -c List.f90 63 | List.o: List.f90 64 | $(f90comp) -c List.f90 65 | 66 | Math.mod: Math.o Math.f90 67 | $(f90comp) -c Math.f90 68 | Math.o: Math.f90 69 | $(f90comp) -c Math.f90 70 | 71 | Mani.mod: Mani.o Mani.f90 72 | $(f90comp) -c Mani.f90 73 | Mani.o: Mani.f90 74 | $(f90comp) -c Mani.f90 75 | 76 | SpanTree.mod: SpanTree.o SpanTree.f90 77 | $(f90comp) -c SpanTree.f90 78 | SpanTree.o: SpanTree.f90 79 | $(f90comp) -c SpanTree.f90 80 | 81 | Importer.mod: Importer.o Importer.f90 82 | $(f90comp) -c Importer.f90 83 | Importer.o: Importer.f90 84 | $(f90comp) -c Importer.f90 85 | 86 | Exam_2D_Open.mod: Exam_2D_Open.o Exam_2D_Open.f90 87 | $(f90comp) -c Exam_2D_Open.f90 88 | Exam_2D_Open.o: Exam_2D_Open.f90 89 | $(f90comp) -c Exam_2D_Open.f90 90 | 91 | 3_Section.mod : 3_Section.o 3_Section.f90 92 | $(f90comp) -c 3_Section.f90 93 | 3_Section.o : 3_Section.f90 94 | $(f90comp) -c 3_Section.f90 95 | 96 | 1_Input.mod : 1_Input.o 1_Input.f90 97 | $(f90comp) -c 1_Input.f90 98 | 1_Input.o : 1_Input.f90 99 | $(f90comp) -c 1_Input.f90 100 | 101 | 2_ModGeo.mod : 2_ModGeo.o 2_ModGeo.f90 102 | $(f90comp) -c 2_ModGeo.f90 103 | 2_ModGeo.o : 2_ModGeo.f90 104 | $(f90comp) -c 2_ModGeo.f90 105 | 106 | 4_Basepair.mod : 4_Basepair.o 4_Basepair.f90 107 | $(f90comp) -c 4_Basepair.f90 108 | 4_Basepair.o : 4_Basepair.f90 109 | $(f90comp) -c 4_Basepair.f90 110 | 111 | 5_Route.mod : 5_Route.o 5_Route.f90 112 | $(f90comp) -c 5_Route.f90 113 | 5_Route.o : 5_Route.f90 114 | $(f90comp) -c 5_Route.f90 115 | 116 | 6_SeqDesign.mod : 6_SeqDesign.o 6_SeqDesign.f90 117 | $(f90comp) -c 6_SeqDesign.f90 118 | 6_SeqDesign.o : 6_SeqDesign.f90 119 | $(f90comp) -c 6_SeqDesign.f90 120 | 121 | 7_Output.mod : 7_Output.o 7_Output.f90 122 | $(f90comp) -c 7_Output.f90 123 | 7_Output.o : 7_Output.f90 124 | $(f90comp) -c 7_Output.f90 125 | 126 | PERDIX.mod : PERDIX.o PERDIX.f90 127 | $(f90comp) -c PERDIX.f90 128 | PERDIX.o : PERDIX.f90 129 | $(f90comp) -c PERDIX.f90 130 | 131 | # Cleaning everything 132 | clean : 133 | rm *.o 134 | rm *.mod 135 | # End of the makefile 136 | -------------------------------------------------------------------------------- /make/makefiles/Makefile_Win: -------------------------------------------------------------------------------- 1 | # 2 | # Makefiles for PERDIX, written by Hyungmin Jun 3 | # 4 | # -fast 5 | # Maximizes speed across the entire program. 6 | # Description: 7 | # This option maximizes speed across the entire program. 8 | # 9 | # It sets the following options: 10 | # - On Linux* systems: -ipo, -O3, -no-prec-div, -static, and -xHost 11 | # - On OS X* systems: -ipo, -mdynamic-no-pic, -O3, -no-prec-div, and -xHost 12 | # - On Windows* systems: /O3, /Qipo, /Qprec-div-, and /QxHost 13 | # 14 | # NOTE: Option fast sets some aggressive optimizations that may not be appropriate for all 15 | # applications. The resulting executable may not run on processor types different from the 16 | # one on which you compile. You should make sure that you understand the individual optimi- 17 | # zation options that are enabled by option fast. 18 | 19 | objects = Data_Bound.obj Data_DNA.obj Data_Geom.obj Data_Mesh.obj Data_Prob.obj \ 20 | Para.obj List.obj Math.obj Mani.obj SpanTree.obj Importer.obj \ 21 | Exam_2D_Open.obj \ 22 | 3_Section.obj 1_Input.obj 2_ModGeo.obj 4_Basepair.obj 5_Route.obj \ 23 | 6_SeqDesign.obj 7_Output.obj PERDIX.obj 24 | 25 | f90comp = ifort 26 | 27 | # Makefile 28 | PERDIX: $(objects) 29 | $(f90comp) -o PERDIX $(objects) 30 | 31 | Data_Bound.mod: Data_Bound.obj Data_Bound.f90 32 | $(f90comp) -c Data_Bound.f90 33 | Data_Bound.obj: Data_Bound.f90 34 | $(f90comp) -c Data_Bound.f90 35 | 36 | Data_DNA.mod: Data_DNA.obj Data_DNA.f90 37 | $(f90comp) -c Data_DNA.f90 38 | Data_DNA.obj: Data_DNA.f90 39 | $(f90comp) -c Data_DNA.f90 40 | 41 | Data_Geom.mod: Data_Geom.obj Data_Geom.f90 42 | $(f90comp) -c Data_Geom.f90 43 | Data_Geom.obj: Data_Geom.f90 44 | $(f90comp) -c Data_Geom.f90 45 | 46 | Data_Mesh.mod: Data_Mesh.obj Data_Mesh.f90 47 | $(f90comp) -c Data_Mesh.f90 48 | Data_Mesh.obj: Data_Mesh.f90 49 | $(f90comp) -c Data_Mesh.f90 50 | 51 | Data_Prob.mod: Data_Prob.obj Data_Prob.f90 52 | $(f90comp) -c Data_Prob.f90 53 | Data_Prob.obj: Data_Prob.f90 54 | $(f90comp) -c Data_Prob.f90 55 | 56 | Para.mod: Para.obj Para.f90 57 | $(f90comp) -c Para.f90 58 | Para.obj: Para.f90 59 | $(f90comp) -c Para.f90 60 | 61 | List.mod: List.obj List.f90 62 | $(f90comp) -c List.f90 63 | List.obj: List.f90 64 | $(f90comp) -c List.f90 65 | 66 | Math.mod: Math.obj Math.f90 67 | $(f90comp) -c Math.f90 68 | Math.obj: Math.f90 69 | $(f90comp) -c Math.f90 70 | 71 | Mani.mod: Mani.obj Mani.f90 72 | $(f90comp) -c Mani.f90 73 | Mani.obj: Mani.f90 74 | $(f90comp) -c Mani.f90 75 | 76 | SpanTree.mod: SpanTree.obj SpanTree.f90 77 | $(f90comp) -c SpanTree.f90 78 | SpanTree.obj: SpanTree.f90 79 | $(f90comp) -c SpanTree.f90 80 | 81 | Importer.mod: Importer.obj Importer.f90 82 | $(f90comp) -c Importer.f90 83 | Importer.obj: Importer.f90 84 | $(f90comp) -c Importer.f90 85 | 86 | Exam_2D_Open.mod: Exam_2D_Open.obj Exam_2D_Open.f90 87 | $(f90comp) -c Exam_2D_Open.f90 88 | Exam_2D_Open.obj: Exam_2D_Open.f90 89 | $(f90comp) -c Exam_2D_Open.f90 90 | 91 | 3_Section.mod : 3_Section.obj 3_Section.f90 92 | $(f90comp) -c 3_Section.f90 93 | 3_Section.obj : 3_Section.f90 94 | $(f90comp) -c 3_Section.f90 95 | 96 | 1_Input.mod : 1_Input.obj 1_Input.f90 97 | $(f90comp) -c 1_Input.f90 98 | 1_Input.obj : 1_Input.f90 99 | $(f90comp) -c 1_Input.f90 100 | 101 | 2_ModGeo.mod : 2_ModGeo.obj 2_ModGeo.f90 102 | $(f90comp) -c 2_ModGeo.f90 103 | 2_ModGeo.obj : 2_ModGeo.f90 104 | $(f90comp) -c 2_ModGeo.f90 105 | 106 | 4_Basepair.mod : 4_Basepair.obj 4_Basepair.f90 107 | $(f90comp) -c 4_Basepair.f90 108 | 4_Basepair.obj : 4_Basepair.f90 109 | $(f90comp) -c 4_Basepair.f90 110 | 111 | 5_Route.mod : 5_Route.obj 5_Route.f90 112 | $(f90comp) -c 5_Route.f90 113 | 5_Route.obj : 5_Route.f90 114 | $(f90comp) -c 5_Route.f90 115 | 116 | 6_SeqDesign.mod : 6_SeqDesign.obj 6_SeqDesign.f90 117 | $(f90comp) -c 6_SeqDesign.f90 118 | 6_SeqDesign.obj : 6_SeqDesign.f90 119 | $(f90comp) -c 6_SeqDesign.f90 120 | 121 | 7_Output.mod : 7_Output.obj 7_Output.f90 122 | $(f90comp) -c 7_Output.f90 123 | 7_Output.obj : 7_Output.f90 124 | $(f90comp) -c 7_Output.f90 125 | 126 | PERDIX.mod : PERDIX.obj PERDIX.f90 127 | $(f90comp) -c PERDIX.f90 128 | PERDIX.obj : PERDIX.f90 129 | $(f90comp) -c PERDIX.f90 130 | 131 | # Cleaning everything 132 | clean : 133 | del *.obj 134 | del *.mod 135 | # End of the makefile -------------------------------------------------------------------------------- /make/resources/PERDIX.rc: -------------------------------------------------------------------------------- 1 | // Microsoft Visual C++ generated resource script. 2 | // 3 | #include "resource.h" 4 | 5 | #define APSTUDIO_READONLY_SYMBOLS 6 | ///////////////////////////////////////////////////////////////////////////// 7 | // 8 | // Generated from the TEXTINCLUDE 2 resource. 9 | // 10 | #include "winres.h" 11 | #include "winver.h" 12 | 13 | ///////////////////////////////////////////////////////////////////////////// 14 | #undef APSTUDIO_READONLY_SYMBOLS 15 | 16 | ///////////////////////////////////////////////////////////////////////////// 17 | // English (United States) resources 18 | 19 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 20 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 21 | #pragma code_page(1252) 22 | 23 | #ifdef APSTUDIO_INVOKED 24 | ///////////////////////////////////////////////////////////////////////////// 25 | // 26 | // TEXTINCLUDE 27 | // 28 | 29 | 2 TEXTINCLUDE 30 | BEGIN 31 | "#include ""winres.h""\r\n" 32 | "#include ""winver.h""\r\n" 33 | "\0" 34 | END 35 | 36 | 3 TEXTINCLUDE 37 | BEGIN 38 | "\r\n" 39 | "\0" 40 | END 41 | 42 | 1 TEXTINCLUDE 43 | BEGIN 44 | "resource.h\0" 45 | END 46 | 47 | #endif // APSTUDIO_INVOKED 48 | 49 | 50 | ///////////////////////////////////////////////////////////////////////////// 51 | // 52 | // Version 53 | // 54 | 55 | VS_VERSION_INFO VERSIONINFO 56 | FILEVERSION 1,0,0,0 57 | PRODUCTVERSION 1,0,0,0 58 | FILEFLAGSMASK 0x3fL 59 | #ifdef _DEBUG 60 | FILEFLAGS 0x1L 61 | #else 62 | FILEFLAGS 0x0L 63 | #endif 64 | FILEOS 0x40004L 65 | FILETYPE 0x0L 66 | FILESUBTYPE 0x0L 67 | BEGIN 68 | BLOCK "StringFileInfo" 69 | BEGIN 70 | BLOCK "040904b0" 71 | BEGIN 72 | VALUE "CompanyName", "Hyungmin Jun (hyungminjun@outlook.com)" 73 | VALUE "FileDescription", "PERDIX" 74 | VALUE "FileVersion", "1.0.0.0" 75 | VALUE "InternalName", "TODO: " 76 | VALUE "LegalCopyright", "Copyright Hyungmin Jun 2015-2016. All Rights Reserved." 77 | VALUE "OriginalFilename", "PERDIX" 78 | VALUE "ProductName", "PERDIX" 79 | VALUE "ProductVersion", "1.0.0.0" 80 | END 81 | END 82 | BLOCK "VarFileInfo" 83 | BEGIN 84 | VALUE "Translation", 0x409, 1200 85 | END 86 | END 87 | 88 | 89 | ///////////////////////////////////////////////////////////////////////////// 90 | // 91 | // Icon 92 | // 93 | 94 | // Icon with lowest ID value placed first to ensure application icon 95 | // remains consistent on all systems. 96 | IDI_ICON ICON "icon.ico" 97 | 98 | 99 | ///////////////////////////////////////////////////////////////////////////// 100 | // 101 | // String Table 102 | // 103 | 104 | STRINGTABLE 105 | BEGIN 106 | 0 " " 107 | END 108 | 109 | #endif // English (United States) resources 110 | ///////////////////////////////////////////////////////////////////////////// 111 | 112 | 113 | 114 | #ifndef APSTUDIO_INVOKED 115 | ///////////////////////////////////////////////////////////////////////////// 116 | // 117 | // Generated from the TEXTINCLUDE 3 resource. 118 | // 119 | 120 | 121 | ///////////////////////////////////////////////////////////////////////////// 122 | #endif // not APSTUDIO_INVOKED 123 | 124 | -------------------------------------------------------------------------------- /make/resources/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/resources/icon.ico -------------------------------------------------------------------------------- /make/resources/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by PERDIX.rc 4 | // 5 | #define IDI_ICON 105 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 110 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1000 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /make/tools/DistMesh/DistMesh.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/tools/DistMesh/DistMesh.exe -------------------------------------------------------------------------------- /make/tools/DistMesh/DistMesh.m: -------------------------------------------------------------------------------- 1 | % 2 | % ============================================================================= 3 | % 4 | % Module - DistMesh 5 | % Last Updated : 05/04/2018, by Hyungmin Jun (hyungminjun@outlook.com) 6 | % 7 | % ============================================================================= 8 | % 9 | % This is part of PERDIX-2L, which allows scientists to build and solve 10 | % the sequence design of complex DNAnanostructures. 11 | % Copyright 2018 Hyungmin Jun. All rights reserved. 12 | % 13 | % License - GPL version 3 14 | % PERDIX-2L is free software: you can redistribute it and/or modify it under 15 | % the terms of the GNU General Public License as published by the Free Software 16 | % Foundation, either version 3 of the License, or any later version. 17 | % PERDIX-2L is distributed in the hope that it will be useful, but WITHOUT 18 | % ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 19 | % FOR A PARTICULAR PURPOSE. See the GNU General Public License 20 | % for more details. 21 | % You should have received a copy of the GNU General Public License along with 22 | % this program. If not, see . 23 | % 24 | % ----------------------------------------------------------------------------- 25 | % 26 | 27 | function [] = meshing(filename, n_mesh) 28 | 29 | % clear all; 30 | close all; 31 | 32 | [filepath,name,ext] = fileparts(filename); 33 | 34 | fid = fopen(filename, 'r'); 35 | tline = fgetl(fid); 36 | buffer = sscanf(tline, '%d %d %d%'); 37 | 38 | n_point = buffer(1); 39 | n_line = buffer(2); 40 | n_face = buffer(3); 41 | 42 | for i = 1: n_point 43 | tline = fgetl(fid); 44 | buffer = sscanf(tline, '%d %f %f'); 45 | 46 | point(i).id = buffer(1); 47 | point(i).x(1)= buffer(2); 48 | point(i).x(2)= buffer(3); 49 | end 50 | 51 | for i = 1: n_face 52 | tline = fgetl(fid); 53 | end 54 | 55 | face = str2num(tline); 56 | 57 | % Set line connectivity 58 | for i = 1: n_point 59 | line(i,1) = point(face(i+2)).x(1); 60 | line(i,2) = point(face(i+2)).x(2); 61 | end 62 | 63 | line(n_point+1,1) = point(face(3)).x(1); 64 | line(n_point+1,2) = point(face(3)).x(2); 65 | 66 | % Scale 67 | A = [abs(min(line(:,1))); abs(min(line(:,2))); abs(max(line(:,1))); abs(max(line(:,2)))]; 68 | A = max(A); 69 | line = line / A; 70 | 71 | % Clean up 72 | fclose(fid); 73 | 74 | % [ p, t ] = distmesh_2d ( fd, fh, h, box, iteration_max, fixed ); 75 | % where: 76 | % fd : the name of a distance function defining the region; 77 | % fh : the name of a mesh density function; 78 | % h : the nominal mesh spacing; 79 | % box : defining a box that contains the region; 80 | % iter_max : the maximum number of iterations; 81 | % fixed : a list of points which must be included in the mesh, or '[]', if no fixed points are given. 82 | % p(output): a list of node coordinates; 83 | % t(output): a list of node indices forming triangles; 84 | 85 | % For deploytool 86 | if(isnumeric(n_mesh) == 0) 87 | n_mesh = str2num(n_mesh) 88 | end 89 | 90 | [p,t]=distmesh2d(@dpoly, @huniform, n_mesh, [min(line(:,1)),min(line(:,2)); max(line(:,1)),max(line(:,2))], line, line); 91 | 92 | % writing file list 93 | fid = fopen(strcat('input/',name,'_distmesh.geo'), 'w'); 94 | 95 | fprintf(fid,'%d %d %d\n', size(p,1), 0, size(t,1)); 96 | for i=1:size(p,1) 97 | fprintf(fid,'%d %f %f\n', i, p(i,1), p(i,2)); 98 | end 99 | 100 | for i=1:size(t,1) 101 | fprintf(fid,'%d %d %d %d %d\n', i, 3, t(i,1), t(i,2), t(i,3)); 102 | end 103 | 104 | % Clean up 105 | fclose(fid); 106 | exit; 107 | end -------------------------------------------------------------------------------- /make/tools/DistMesh/readme.txt: -------------------------------------------------------------------------------- 1 | DistMesh.exe was compiled by deploytool 2 | 3 | Verify the MATLAB Runtime is installed and ensure you 4 | have installed version 9.0 (R2015b). 5 | If the MATLAB Runtime is not installed download 6 | the Windows 64-bit version of the MATLAB Runtime for R2015b 7 | from the MathWorks Web site by navigating to 8 | http://www.mathworks.com/products/compiler/mcr/index.html -------------------------------------------------------------------------------- /make/tools/DistMesh/src/COPYRIGHT.TXT: -------------------------------------------------------------------------------- 1 | DistMesh is a collection of MATLAB functions for generation and 2 | manipulation of unstructured meshes. DistMesh is Copyright (C) 2004-2012 3 | Per-Olof Persson. 4 | 5 | This program is free software; you can redistribute it and/or modify it 6 | under the terms of the GNU General Public License as published by the 7 | Free Software Foundation; either version 2 of the License, or (at your 8 | option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, but 11 | WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 13 | Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | If you use DistMesh in any program or publication, please acknowledge 20 | its authors by adding a reference to: Per-Olof Persson and Gilbert 21 | Strang, "A Simple Mesh Generator in MATLAB," SIAM Review Vol. 46 (2) 22 | 2004. 23 | -------------------------------------------------------------------------------- /make/tools/DistMesh/src/distmesh2d.m: -------------------------------------------------------------------------------- 1 | function [p,t]=distmesh2d(fd,fh,h0,bbox,pfix,varargin) 2 | %DISTMESH2D 2-D Mesh Generator using Distance Functions. 3 | % [P,T]=DISTMESH2D(FD,FH,H0,BBOX,PFIX,FPARAMS) 4 | % 5 | % P: Node positions (Nx2) 6 | % T: Triangle indices (NTx3) 7 | % FD: Distance function d(x,y) 8 | % FH: Scaled edge length function h(x,y) 9 | % H0: Initial edge length 10 | % BBOX: Bounding box [xmin,ymin; xmax,ymax] 11 | % PFIX: Fixed node positions (NFIXx2) 12 | % FPARAMS: Additional parameters passed to FD and FH 13 | % 14 | % Example: (Uniform Mesh on Unit Circle) 15 | % fd=@(p) sqrt(sum(p.^2,2))-1; 16 | % [p,t]=distmesh2d(fd,@huniform,0.2,[-1,-1;1,1],[]); 17 | % 18 | % Example: (Rectangle with circular hole, refined at circle boundary) 19 | % fd=@(p) ddiff(drectangle(p,-1,1,-1,1),dcircle(p,0,0,0.5)); 20 | % fh=@(p) 0.05+0.3*dcircle(p,0,0,0.5); 21 | % [p,t]=distmesh2d(fd,fh,0.05,[-1,-1;1,1],[-1,-1;-1,1;1,-1;1,1]); 22 | % 23 | % Example: (Polygon) 24 | % pv=[-0.4 -0.5;0.4 -0.2;0.4 -0.7;1.5 -0.4;0.9 0.1; 25 | % 1.6 0.8;0.5 0.5;0.2 1;0.1 0.4;-0.7 0.7;-0.4 -0.5]; 26 | % [p,t]=distmesh2d(@dpoly,@huniform,0.1,[-1,-1; 2,1],pv,pv); 27 | % 28 | % Example: (Ellipse) 29 | % fd=@(p) p(:,1).^2/2^2+p(:,2).^2/1^2-1; 30 | % [p,t]=distmesh2d(fd,@huniform,0.2,[-2,-1;2,1],[]); 31 | % 32 | % Example: (Square, with size function point and line sources) 33 | % fd=@(p) drectangle(p,0,1,0,1); 34 | % fh=@(p) min(min(0.01+0.3*abs(dcircle(p,0,0,0)), ... 35 | % 0.025+0.3*abs(dpoly(p,[0.3,0.7; 0.7,0.5]))),0.15); 36 | % [p,t]=distmesh2d(fd,fh,0.01,[0,0;1,1],[0,0;1,0;0,1;1,1]); 37 | % 38 | % Example: (NACA0012 airfoil) 39 | % hlead=0.01; htrail=0.04; hmax=2; circx=2; circr=4; 40 | % a=.12/.2*[0.2969,-0.1260,-0.3516,0.2843,-0.1036]; 41 | % 42 | % fd=@(p) ddiff(dcircle(p,circx,0,circr),(abs(p(:,2))-polyval([a(5:-1:2),0],p(:,1))).^2-a(1)^2*p(:,1)); 43 | % fh=@(p) min(min(hlead+0.3*dcircle(p,0,0,0),htrail+0.3*dcircle(p,1,0,0)),hmax); 44 | % 45 | % fixx=1-htrail*cumsum(1.3.^(0:4)'); 46 | % fixy=a(1)*sqrt(fixx)+polyval([a(5:-1:2),0],fixx); 47 | % fix=[[circx+[-1,1,0,0]*circr; 0,0,circr*[-1,1]]'; 0,0; 1,0; fixx,fixy; fixx,-fixy]; 48 | % box=[circx-circr,-circr; circx+circr,circr]; 49 | % h0=min([hlead,htrail,hmax]); 50 | % 51 | % [p,t]=distmesh2d(fd,fh,h0,box,fix); 52 | 53 | % 54 | % See also: MESHDEMO2D, DISTMESHND, DELAUNAYN, TRIMESH. 55 | 56 | % distmesh2d.m v1.1 57 | % Copyright (C) 2004-2012 Per-Olof Persson. See COPYRIGHT.TXT for details. 58 | 59 | dptol=.001; ttol=.1; Fscale=1.2; deltat=.2; geps=.001*h0; deps=sqrt(eps)*h0; 60 | densityctrlfreq=30; 61 | 62 | % 1. Create initial distribution in bounding box (equilateral triangles) 63 | [x,y]=meshgrid(bbox(1,1):h0:bbox(2,1),bbox(1,2):h0*sqrt(3)/2:bbox(2,2)); 64 | x(2:2:end,:)=x(2:2:end,:)+h0/2; % Shift even rows 65 | p=[x(:),y(:)]; % List of node coordinates 66 | 67 | % 2. Remove points outside the region, apply the rejection method 68 | p=p(feval(fd,p,varargin{:})ttol % Any large movement? 83 | pold=p; % Save current positions 84 | t=delaunayn(p); % List of triangles 85 | pmid=(p(t(:,1),:)+p(t(:,2),:)+p(t(:,3),:))/3; % Compute centroids 86 | t=t(feval(fd,pmid,varargin{:})<-geps,:); % Keep interior triangles 87 | % 4. Describe each bar by a unique pair of nodes 88 | bars=[t(:,[1,2]);t(:,[1,3]);t(:,[2,3])]; % Interior bars duplicated 89 | bars=unique(sort(bars,2),'rows'); % Bars as node pairs 90 | % 5. Graphical output of the current mesh 91 | %cla,patch('vertices',p,'faces',t,'edgecol','k','facecol',[.8,.9,1]); 92 | %drawnow 93 | end 94 | 95 | % 6. Move mesh points based on bar lengths L and forces F 96 | barvec=p(bars(:,1),:)-p(bars(:,2),:); % List of bar vectors 97 | L=sqrt(sum(barvec.^2,2)); % L = Bar lengths 98 | hbars=feval(fh,(p(bars(:,1),:)+p(bars(:,2),:))/2,varargin{:}); 99 | L0=hbars*Fscale*sqrt(sum(L.^2)/sum(hbars.^2)); % L0 = Desired lengths 100 | 101 | % Density control - remove points that are too close 102 | if mod(count,densityctrlfreq)==0 & any(L0>2*L) 103 | p(setdiff(reshape(bars(L0>2*L,:),[],1),1:nfix),:)=[]; 104 | N=size(p,1); pold=inf; 105 | continue; 106 | end 107 | 108 | F=max(L0-L,0); % Bar forces (scalars) 109 | Fvec=F./L*[1,1].*barvec; % Bar forces (x,y components) 110 | Ftot=full(sparse(bars(:,[1,1,2,2]),ones(size(F))*[1,2,1,2],[Fvec,-Fvec],N,2)); 111 | Ftot(1:size(pfix,1),:)=0; % Force = 0 at fixed points 112 | p=p+deltat*Ftot; % Update node positions 113 | 114 | % 7. Bring outside points back to the boundary 115 | d=feval(fd,p,varargin{:}); ix=d>0; % Find points outside (d>0) 116 | dgradx=(feval(fd,[p(ix,1)+deps,p(ix,2)],varargin{:})-d(ix))/deps; % Numerical 117 | dgrady=(feval(fd,[p(ix,1),p(ix,2)+deps],varargin{:})-d(ix))/deps; % gradient 118 | dgrad2=dgradx.^2+dgrady.^2; 119 | p(ix,:)=p(ix,:)-[d(ix).*dgradx./dgrad2,d(ix).*dgrady./dgrad2]; % Project 120 | 121 | % 8. Termination criterion: All interior nodes move less than dptol (scaled) 122 | if max(sqrt(sum(deltat*Ftot(d<-geps,:).^2,2))/h0)=c2; 35 | %ds(ix)=sqrt(sum((p(ix,:)-pv(2*ones(sum(ix),1),:)).^2,2)); 36 | % 37 | %ix=c1>0 & c2>c1; 38 | %nix=sum(ix); 39 | %if nix>0 40 | % Pb=ones(nix,1)*pv(1,:)+c1(ix)./c2(ix)*v; 41 | % ds(ix)=sqrt(sum((p(ix,:)-Pb).^2,2)); 42 | %end 43 | -------------------------------------------------------------------------------- /make/tools/DistMesh/src/dsegment.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2004-2012 Per-Olof Persson. See COPYRIGHT.TXT for details. 2 | 3 | #include "mex.h" 4 | #include 5 | 6 | #define p(i,j) p[(i)+np*(j)] 7 | #define pv(i,j) pv[(i)+nvs*(j)] 8 | #define ds(i,j) ds[(i)+np*(j)] 9 | 10 | template inline T sqr(T x) { return x*x; } 11 | template inline T dot2(T *a,T *b) { return a[0]*b[0]+a[1]*b[1]; } 12 | template inline T length(T x,T y) { return sqrt(sqr(x)+sqr(y)); } 13 | 14 | void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 15 | { 16 | int np=mxGetM(prhs[0]); 17 | int nvs=mxGetM(prhs[1]); 18 | double *p=mxGetPr(prhs[0]); 19 | double *pv=mxGetPr(prhs[1]); 20 | 21 | plhs[0]=mxCreateDoubleMatrix(np,nvs-1,mxREAL); 22 | double *ds=mxGetPr(plhs[0]); 23 | 24 | for (int iv=0; iv=c2) 37 | ds(ip,iv)=length(p(ip,0)-pv(iv+1,0),p(ip,1)-pv(iv+1,1)); 38 | else 39 | ds(ip,iv)=length(p(ip,0)-(pv(iv,0)+c1/c2*v[0]), 40 | p(ip,1)-(pv(iv,1)+c1/c2*v[1])); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /make/tools/DistMesh/src/dsegment.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/tools/DistMesh/src/dsegment.mexa64 -------------------------------------------------------------------------------- /make/tools/DistMesh/src/dsegment.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/tools/DistMesh/src/dsegment.mexmaci64 -------------------------------------------------------------------------------- /make/tools/DistMesh/src/dsegment.mexw32: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/tools/DistMesh/src/dsegment.mexw32 -------------------------------------------------------------------------------- /make/tools/DistMesh/src/dsegment.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/tools/DistMesh/src/dsegment.mexw64 -------------------------------------------------------------------------------- /make/tools/DistMesh/src/fixmesh.m: -------------------------------------------------------------------------------- 1 | function [p,t,pix]=fixmesh(p,t,ptol) 2 | %FIXMESH Remove duplicated/unused nodes and fix element orientation. 3 | % [P,T]=FIXMESH(P,T) 4 | 5 | % Copyright (C) 2004-2012 Per-Olof Persson. See COPYRIGHT.TXT for details. 6 | 7 | if nargin<3, ptol=1024*eps; end 8 | if nargin>=2 & (isempty(p) | isempty(t)), pix=1:size(p,1); return; end 9 | 10 | snap=max(max(p,[],1)-min(p,[],1),[],2)*ptol; 11 | [foo,ix,jx]=unique(round(p/snap)*snap,'rows'); 12 | p=p(ix,:); 13 | 14 | if nargin>=2 15 | t=reshape(jx(t),size(t)); 16 | 17 | [pix,ix1,jx1]=unique(t); 18 | t=reshape(jx1,size(t)); 19 | p=p(pix,:); 20 | pix=ix(pix); 21 | 22 | if size(t,2)==size(p,2)+1 23 | flip=simpvol(p,t)<0; 24 | t(flip,[1,2])=t(flip,[2,1]); 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /make/tools/DistMesh/src/hmatrix.m: -------------------------------------------------------------------------------- 1 | function h=hmatrix(p,xx,yy,dd,hh,varargin) 2 | 3 | % Copyright (C) 2004-2012 Per-Olof Persson. See COPYRIGHT.TXT for details. 4 | 5 | h=interp2(xx,yy,hh,p(:,1),p(:,2),'*linear'); 6 | -------------------------------------------------------------------------------- /make/tools/DistMesh/src/hmatrix3d.m: -------------------------------------------------------------------------------- 1 | function h=hmatrix3d(p,xx,yy,zz,dd,hh,varargin) 2 | 3 | % Copyright (C) 2004-2012 Per-Olof Persson. See COPYRIGHT.TXT for details. 4 | 5 | h=interpn(xx,yy,zz,hh,p(:,1),p(:,2),p(:,3),'*linear'); 6 | -------------------------------------------------------------------------------- /make/tools/DistMesh/src/huniform.m: -------------------------------------------------------------------------------- 1 | function h=huniform(p,varargin) 2 | 3 | % Copyright (C) 2004-2012 Per-Olof Persson. See COPYRIGHT.TXT for details. 4 | 5 | h=ones(size(p,1),1); 6 | -------------------------------------------------------------------------------- /make/tools/DistMesh/src/simpplot.m: -------------------------------------------------------------------------------- 1 | function simpplot(p,t,expr,bcol,icol,nodes,tris) 2 | 3 | % Copyright (C) 2004-2012 Per-Olof Persson. See COPYRIGHT.TXT for details. 4 | 5 | dim=size(p,2); 6 | switch dim 7 | case 2 8 | if nargin<4 | isempty(bcol), bcol=[.8,.9,1]; end 9 | if nargin<5 | isempty(icol), icol=[0,0,0]; end 10 | if nargin<6, nodes=0; end 11 | if nargin<7, tris=0; end 12 | 13 | trimesh(t,p(:,1),p(:,2),0*p(:,1),'facecolor',bcol,'edgecolor','k'); 14 | if nodes==1 15 | line(p(:,1),p(:,2),'linest','none','marker','.','col',icol,'markers',24); 16 | elseif nodes==2 17 | for ip=1:size(p,1) 18 | txtpars={'fontname','times','fontsize',12}; 19 | text(p(ip,1),p(ip,2),num2str(ip),txtpars{:}); 20 | end 21 | end 22 | if tris==2 23 | for it=1:size(t,1) 24 | pmid=mean(p(t(it,:),:),1); 25 | txtpars={'fontname','times','fontsize',12,'horizontala','center'}; 26 | text(pmid(1),pmid(2),num2str(it),txtpars{:}); 27 | end 28 | end 29 | view(2) 30 | axis equal 31 | axis off 32 | ax=axis;axis(ax*1.001); 33 | case 3 34 | if nargin<4 | isempty(bcol), bcol=[.8,.9,1]; end 35 | if nargin<5 | isempty(icol), icol=[.9,.8,1]; end 36 | 37 | if size(t,2)==4 38 | tri1=surftri(p,t); 39 | if nargin>2 & ~isempty(expr) 40 | incl=find(eval(expr)); 41 | t=t(any(ismember(t,incl),2),:); 42 | tri1=tri1(any(ismember(tri1,incl),2),:); 43 | tri2=surftri(p,t); 44 | tri2=setdiff(tri2,tri1,'rows'); 45 | h=trimesh(tri2,p(:,1),p(:,2),p(:,3)); 46 | set(h,'facecolor',icol,'edgecolor','k'); 47 | hold on 48 | end 49 | else 50 | tri1=t; 51 | if nargin>2 & ~isempty(expr) 52 | incl=find(eval(expr)); 53 | tri1=tri1(any(ismember(tri1,incl),2),:); 54 | end 55 | end 56 | h=trimesh(tri1,p(:,1),p(:,2),p(:,3)); 57 | hold off 58 | set(h,'facecolor',bcol,'edgecolor','k'); 59 | axis equal 60 | cameramenu 61 | otherwise 62 | error('Unimplemented dimension.'); 63 | end 64 | -------------------------------------------------------------------------------- /make/tools/DistMesh/src/simpvol.m: -------------------------------------------------------------------------------- 1 | function v=simpvol(p,t) 2 | %SIMPVOL Simplex volume. 3 | % V=SIMPVOL(P,T) 4 | 5 | % Copyright (C) 2004-2012 Per-Olof Persson. See COPYRIGHT.TXT for details. 6 | 7 | switch size(p,2) 8 | case 1 9 | d12=p(t(:,2),:)-p(t(:,1),:); 10 | v=d12; 11 | case 2 12 | d12=p(t(:,2),:)-p(t(:,1),:); 13 | d13=p(t(:,3),:)-p(t(:,1),:); 14 | v=(d12(:,1).*d13(:,2)-d12(:,2).*d13(:,1))/2; 15 | case 3 16 | d12=p(t(:,2),:)-p(t(:,1),:); 17 | d13=p(t(:,3),:)-p(t(:,1),:); 18 | d14=p(t(:,4),:)-p(t(:,1),:); 19 | v=dot(cross(d12,d13,2),d14,2)/6; 20 | otherwise 21 | v=zeros(size(t,1),1); 22 | for ii=1:size(t,1) 23 | A=zeros(size(p,2)+1); 24 | A(:,1)=1; 25 | for jj=1:size(p,2)+1 26 | A(jj,2:end)=p(t(ii,jj),:); 27 | end 28 | v(ii)=det(A); 29 | end 30 | v=v/factorial(size(p,2)); 31 | end 32 | -------------------------------------------------------------------------------- /make/tools/MeshConv/MeshConv.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/tools/MeshConv/MeshConv.exe -------------------------------------------------------------------------------- /make/tools/PyDistMesh/PyDistMesh.py: -------------------------------------------------------------------------------- 1 | """ 2 | ! 3 | ! ============================================================================= 4 | ! 5 | ! Module - PyDistMesh 6 | ! Last Updated : 05/04/2018, by Hyungmin Jun (hyungminjun@outlook.com) 7 | ! 8 | ! ============================================================================= 9 | ! 10 | ! This is part of PERDIX-2L, which allows scientists to build and solve 11 | ! the sequence design of complex DNAnanostructures. 12 | ! Copyright 2018 Hyungmin Jun. All rights reserved. 13 | ! 14 | ! License - GPL version 3 15 | ! PERDIX-2L is free software: you can redistribute it and/or modify it under 16 | ! the terms of the GNU General Public License as published by the Free Software 17 | ! Foundation, either version 3 of the License, or any later version. 18 | ! PERDIX-2L is distributed in the hope that it will be useful, but WITHOUT 19 | ! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 20 | ! FOR A PARTICULAR PURPOSE. See the GNU General Public License 21 | ! for more details. 22 | ! You should have received a copy of the GNU General Public License along with 23 | ! this program. If not, see . 24 | ! 25 | ! ----------------------------------------------------------------------------- 26 | ! 27 | """ 28 | import sys 29 | 30 | import numpy as np 31 | import scipy.spatial as spspatial 32 | 33 | # Local imports 34 | import distmesh 35 | import distmesh.mlcompat as ml 36 | import distmesh.utils as dmutils 37 | 38 | __all__ = ['distmesh2d'] 39 | 40 | # Open file stream 41 | if len(sys.argv) is 3: 42 | fin = open(sys.argv[1], 'r') 43 | filename, filetype = sys.argv[1].split('.') 44 | 45 | # sys.argv[0] - Python runnung file name 46 | # sys.argv[1] - First inputs 47 | # sys.argv[2] - Second inputs, mesh spacing parameter 48 | #print " * File name -> ", filename 49 | #print " * File type -> ", filetype 50 | #print " * Mesh spacing parameter -> ", sys.argv[2] 51 | 52 | # Open file stream 53 | str = fin.readline() 54 | str = str.split("\t") 55 | n_point = int(str[0]) 56 | n_line = int(str[1]) 57 | n_face = int(str[2]) 58 | 59 | #print " * The number of points -> ", n_point 60 | #print " * The number of lines -> ", n_line 61 | #print " * The number of faces -> ", n_face 62 | 63 | point_id = [] 64 | point_x = [] 65 | point_y = [] 66 | for i in range(n_point): 67 | str = fin.readline() 68 | str = str.split() 69 | point_id.append(int(str[0])) 70 | point_x.append(float(str[1])) 71 | point_y.append(float(str[2])) 72 | 73 | face = [] 74 | str = fin.readline() 75 | str = str.split() 76 | 77 | for i in range(n_point): 78 | face.append((point_x[int(str[i+2])-1], point_y[int(str[i+2])-1])) 79 | fin.close() 80 | 81 | face.append((point_x[int(str[2])-1], point_y[int(str[2])-1])) 82 | 83 | pv = face 84 | posx = [] 85 | posy = [] 86 | 87 | for i in range(len(pv)): 88 | posx.append(pv[i][0]) 89 | posy.append(pv[i][1]) 90 | 91 | minx = min(posx) 92 | miny = min(posy) 93 | maxx = max(posx) 94 | maxy = max(posy) 95 | #print " * Min x and y -> ", minx, ", ", miny 96 | #print " * Max x and y -> ", maxx, ", ", maxy 97 | 98 | max = max([abs(minx), abs(miny), abs(maxx), abs(maxy)]) 99 | 100 | for i in range(len(pv)): 101 | pv[i] = (pv[i][0] / max, pv[i][1] / max) 102 | 103 | fd = lambda p: distmesh.dpoly(p, pv) 104 | p, t = distmesh.distmesh2d(fd, distmesh.huniform, float(sys.argv[2]), (minx,miny,maxx,maxy), pv) 105 | 106 | #for i in range(len(p)): 107 | # print p[i,0], p[i,1] 108 | 109 | # Open file stream 110 | fout = open(filename+'_distmesh.geo', 'w') 111 | fout.write('%d\t' % len(p)) 112 | fout.write('0\t') 113 | fout.write('%d\n' % len(t)) 114 | 115 | for i in range(len(p)): 116 | fout.write('%5d %14.5f %14.5f \n' % (i, p[i,0], p[i,1])) 117 | 118 | for i in range(len(t)): 119 | fout.write('%5d %5d %5d %5d %5d \n' % (i, 3, t[i,0]+1, t[i,1]+1, t[i,2]+1)) 120 | 121 | fout.close() 122 | quit() -------------------------------------------------------------------------------- /make/tools/Shapely/PyInstaller/geos_c.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/tools/Shapely/PyInstaller/geos_c.dll -------------------------------------------------------------------------------- /make/tools/Shapely/PyInstaller/libgeos.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/make/tools/Shapely/PyInstaller/libgeos.lib -------------------------------------------------------------------------------- /make/tools/Shapely/PyInstaller/readme.txt: -------------------------------------------------------------------------------- 1 | pyinstaller.exe -F --onefile spec.spec Shapely.py -------------------------------------------------------------------------------- /make/tools/Shapely/PyInstaller/spec.spec: -------------------------------------------------------------------------------- 1 | # -*- mode: python -*- 2 | 3 | block_cipher = None 4 | 5 | 6 | a = Analysis(['Shapely.py'], 7 | pathex=['C:\\Users\\Hyungmin\\Desktop\\Coding\\PERDIX-2L\\make\\tools\\Shapely\\pyinstaller'], 8 | binaries=[], 9 | datas=[], 10 | hiddenimports=['shapely'], 11 | hookspath=[], 12 | runtime_hooks=[], 13 | excludes=[], 14 | win_no_prefer_redirects=False, 15 | win_private_assemblies=False, 16 | cipher=block_cipher) 17 | 18 | a.binaries = a.binaries + [('geos_c.dll', 'geos_c.dll', 'BINARY')] 19 | a.binaries = a.binaries + [('libgeos.lib', 'libgeos.lib', 'BINARY')] 20 | 21 | pyz = PYZ(a.pure, a.zipped_data, 22 | cipher=block_cipher) 23 | exe = EXE(pyz, 24 | a.scripts, 25 | a.binaries, 26 | a.zipfiles, 27 | a.datas, 28 | name='Shapely', 29 | debug=False, 30 | strip=False, 31 | upx=True, 32 | console=True ) 33 | -------------------------------------------------------------------------------- /make/tools/Shapely/Shapely.py: -------------------------------------------------------------------------------- 1 | """ 2 | ! 3 | ! ============================================================================= 4 | ! 5 | ! Module - Shapely 6 | ! Last Updated : 04/28/2018, by Hyungmin Jun (hyungminjun@outlook.com) 7 | ! 8 | ! ============================================================================= 9 | ! 10 | ! This is part of PERDIX-2L, which allows scientists to build and solve 11 | ! the sequence design of complex DNAnanostructures. 12 | ! Copyright 2018 Hyungmin Jun. All rights reserved. 13 | ! 14 | ! License - GPL version 3 15 | ! PERDIX-2L is free software: you can redistribute it and/or modify it under 16 | ! the terms of the GNU General Public License as published by the Free Software 17 | ! Foundation, either version 3 of the License, or any later version. 18 | ! PERDIX-2L is distributed in the hope that it will be useful, but WITHOUT 19 | ! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 20 | ! FOR A PARTICULAR PURPOSE. See the GNU General Public License 21 | ! for more details. 22 | ! You should have received a copy of the GNU General Public License along with 23 | ! this program. If not, see . 24 | ! 25 | ! ----------------------------------------------------------------------------- 26 | ! 27 | """ 28 | 29 | import sys 30 | from shapely.geometry import MultiLineString 31 | from shapely.geometry import MultiPolygon 32 | from shapely.ops import polygonize_full 33 | from shapely.ops import cascaded_union 34 | 35 | # Open file stream 36 | if len(sys.argv) is 1: 37 | fin = open('test.igs', 'r') 38 | filename = 'test' 39 | filetype = 'igs' 40 | if len(sys.argv) is 2: 41 | fin = open(sys.argv[1], 'r') 42 | filename, filetype = sys.argv[1].split('.') 43 | 44 | #print '\nFilename: ', filename, '\nFiletype: ', filetype, '\n' 45 | 46 | # ================================================== 47 | # Read GEO data 48 | # ================================================== 49 | if filetype == 'geo': 50 | str = fin.readline() 51 | info = str.split() 52 | 53 | n_point = int(info[0]) 54 | n_line = int(info[1]) 55 | n_face = int(info[2]) 56 | 57 | # ================================================== 58 | # Read points 59 | # ================================================== 60 | points = [] 61 | for i in range(n_point): 62 | str = fin.readline() 63 | point = str.split() 64 | points.append([float(point[1]), -float(point[2])]) 65 | 66 | # Print points 67 | #print 'Points: ', n_point 68 | #for i in range(n_point): 69 | # print i+1, ' th points : ', points[i] 70 | #print '\n' 71 | 72 | # ================================================== 73 | # Read lines 74 | # ================================================== 75 | lines = [] 76 | for i in range(n_line): 77 | str = fin.readline() 78 | line = str.split() 79 | lines.append([int(line[1]), int(line[2])]) 80 | 81 | # Print lines 82 | #print 'Lines:', n_line 83 | #for i in range(n_line): 84 | # print i+1, ' th lines : ', lines[i] 85 | #print '\n' 86 | 87 | # ================================================== 88 | # Make lines with points 89 | # ================================================== 90 | linepoints = [] 91 | for i in range(n_line): 92 | poi1, poi2 = lines[i] 93 | linepoint = [((points[poi1-1]),(points[poi2-1]))] 94 | linepoints.extend(linepoint) 95 | 96 | # ================================================== 97 | # Read IGES file 98 | # ================================================== 99 | if filetype == 'igs' or filetype == 'iges': 100 | 101 | linepoints = [] 102 | while True: 103 | str = fin.readline() 104 | if str == '': 105 | break 106 | str = str.split(',') 107 | 108 | # Add lines 109 | points = [] 110 | if str[0] == '110': 111 | 112 | # no count first and last items 113 | index = len(str) - 2 114 | for i in (range(1,len(str)-1)): 115 | if i == 5: 116 | split0 = str[5].split(';') 117 | points.append(float(split0[0])) 118 | else: 119 | points.append(float(str[i])) 120 | else: 121 | if index is 3: 122 | # 2 items are below 123 | str = fin.readline() 124 | str = str.split(',') 125 | split0 = str[2].split(';') 126 | points.append(float(str[0])) 127 | points.append(float(str[1])) 128 | points.append(float(split0[0])) 129 | if index is 4: 130 | # 1 item is below 131 | str = fin.readline() 132 | str = str.split(',') 133 | split0 = str[1].split(';') 134 | points.append(float(str[0])) 135 | points.append(float(split0[0])) 136 | 137 | # Set zero 138 | if abs(points[0]) < 0.0000001: 139 | points[0] = 0.0 140 | if abs(points[1]) < 0.0000001: 141 | points[1] = 0.0 142 | if abs(points[3]) < 0.0000001: 143 | points[3] = 0.0 144 | if abs(points[4]) < 0.0000001: 145 | points[4] = 0.0 146 | 147 | linepoint = [((points[0], points[1]), (points[3], points[4]))] 148 | linepoints.extend(linepoint) 149 | 150 | n_line = len(linepoints) 151 | 152 | fin.close() 153 | 154 | # Print line list with points 155 | #print 'Lines with points: ', n_line 156 | #for i in range(n_line): 157 | # print i+1, ' th lines with points : ', linepoints[i] 158 | #print '\n' 159 | 160 | # ================================================== 161 | # Make mutilinestring from line list 162 | # ================================================== 163 | multilines = MultiLineString(linepoints) 164 | 165 | x = multilines.intersection(multilines) 166 | 167 | # Polygonize 168 | result, dangles, cuts, invalids = polygonize_full(x) 169 | 170 | result = MultiPolygon(result) 171 | polygon = cascaded_union(result) 172 | 173 | # Make mutilinestring from line list 174 | #multilines = MultiLineString(linepoints) 175 | 176 | # Polygonize 177 | #result, dangles, cuts, invalids = polygonize_full(multilines) 178 | 179 | #result = MultiPolygon(result) 180 | #polygon = cascaded_union(result) 181 | 182 | ################################################## 183 | multilines = polygon.boundary.union(result.boundary) 184 | 185 | # Polygonize 186 | result, dangles, cuts, invalids = polygonize_full(multilines) 187 | ################################################## 188 | 189 | polygon = MultiPolygon(result) 190 | 191 | # Print polygon 192 | #print '\n' 193 | #print ' # of faces : ', len(polygon) 194 | #for i in range(len(polygon)): 195 | # print i+1, ' th', polygon[i] 196 | #print '\n' 197 | 198 | # ================================================== 199 | # Extract points 200 | # ================================================== 201 | points = [] 202 | for i in range(len(polygon)): 203 | point = list(polygon[i].exterior.coords) 204 | for j in range(len(point)): 205 | x = point[j] 206 | if x not in points: 207 | points.extend([(x[0], x[1])]) 208 | 209 | # Print points 210 | print ' # of faces : ', len(polygon), ', # of points: ', len(points) 211 | #for i in range(len(points)): 212 | # print i+1, ' th point : ', points[i] 213 | #print '\n' 214 | 215 | # ================================================== 216 | # Face connectivity 217 | # ================================================== 218 | conns = [] 219 | for i in range(len(polygon)): 220 | conn = polygon[i].exterior.coords 221 | count = len(polygon[i].exterior.coords) 222 | face = [] 223 | for j in range(count-1): 224 | face.append(points.index(conn[j])) 225 | 226 | # Make connectivity 227 | conns.append(face) 228 | 229 | # Print connectivity 230 | #print 'Face connectivity: ', len(conns) 231 | #for i in range(len(conns)): 232 | # print i+1, ' th connectivity : ', len(conns[i]), ' - ', conns[i] 233 | #print '\n' 234 | 235 | # ================================================== 236 | # Write file 237 | # ================================================== 238 | # Open file stream 239 | fout = open(filename+'_shapely.geo', 'w') 240 | 241 | fout.write('%d\t' % len(points)) 242 | fout.write('0\t') 243 | fout.write('%d\n' % len(conns)) 244 | for i in range(len(points)): 245 | fout.write('%d \t' % (i+1)) 246 | fout.write('%s \t %s \t\n' % points[i]) 247 | 248 | for i in range(len(conns)): 249 | fout.write('%d \t' % (i+1)) 250 | fout.write('%d \t' % len(conns[i])) 251 | for j in range(len(conns[i])-1, -1, -1): 252 | entity = conns[i][j] + 1 253 | fout.write('%d \t' %entity) 254 | 255 | fout.write('\n') 256 | fout.close() -------------------------------------------------------------------------------- /make/tools/Shapely/readme.txt: -------------------------------------------------------------------------------- 1 | Anaconda 2(64bit) 2 | Add path 3 | Integrate python 2.7 4 | 5 | Requirements: 6 | • shapely 7 | • numpy 8 | • pyinstaller 9 | 10 | Environment: 11 | Anaconda 64bit + Python 2.7 12 | 13 | Install: 14 | conda install shapely 15 | pyinstaller.exe -F Spec_Conv.spec Shapely.py 16 | 17 | Etc: 18 | Unofficial Windows Binaries for Python Extension Packages – wheel files 19 | https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely 20 | conda config --add channels conda-forge 21 | 22 | 23 | ############################################ 24 | 25 | Linux 26 | Install pip for python 27 | wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py --user 28 | pip install shapely -------------------------------------------------------------------------------- /release/PERDIX-Mac.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/release/PERDIX-Mac.zip -------------------------------------------------------------------------------- /release/PERDIX-Win-MATLAB.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/release/PERDIX-Win-MATLAB.zip -------------------------------------------------------------------------------- /release/PERDIX-Win-MCR.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/release/PERDIX-Win-MCR.zip -------------------------------------------------------------------------------- /src/1_Input.f90: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/src/1_Input.f90 -------------------------------------------------------------------------------- /src/3_Section.f90: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/src/3_Section.f90 -------------------------------------------------------------------------------- /src/4_Basepair.f90: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcbb/PERDIX/8c667cbc0b6ba3fc48b0384ef07de37eaafaca32/src/4_Basepair.f90 -------------------------------------------------------------------------------- /src/Data_Bound.f90: -------------------------------------------------------------------------------- 1 | ! 2 | ! ============================================================================= 3 | ! 4 | ! Module - Data_Bound 5 | ! Last Updated : 04/10/2018, by Hyungmin Jun (hyungminjun@outlook.com) 6 | ! 7 | ! ============================================================================= 8 | ! 9 | ! This is part of PERDIX, which allows scientists to build and solve 10 | ! the sequence design of complex DNAnanostructures. 11 | ! Copyright 2018 Hyungmin Jun. All rights reserved. 12 | ! 13 | ! License - GPL version 3 14 | ! PERDIX is free software: you can redistribute it and/or modify it under 15 | ! the terms of the GNU General Public License as published by the Free Software 16 | ! Foundation, either version 3 of the License, or any later version. 17 | ! PERDIX is distributed in the hope that it will be useful, but WITHOUT 18 | ! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 19 | ! FOR A PARTICULAR PURPOSE. See the GNU General Public License 20 | ! for more details. 21 | ! You should have received a copy of the GNU General Public License along with 22 | ! this program. If not, see . 23 | ! 24 | ! ----------------------------------------------------------------------------- 25 | ! 26 | module Data_Bound 27 | 28 | ! ----------------------------------------------------------------------------- 29 | 30 | ! Junction data structure 31 | type :: JuncType 32 | integer :: n_arm ! The number of arms 33 | integer :: poi_c ! Center position 34 | 35 | integer :: n_un_scaf = 0 ! # of unpaired nucleotide in scaf 36 | integer :: n_un_stap = 0 ! # of unpaired nucleotide in stap 37 | 38 | double precision :: ref_ang ! Reference angle between two neighboring edges 39 | double precision :: tot_ang ! Total angle at the junction 40 | double precision :: gap ! Gap distance between junction and end of edges 41 | 42 | integer, allocatable :: iniL(:) ! Initial line 43 | integer, allocatable :: modP(:) ! Modified point 44 | integer, allocatable :: croP(:,:) ! Sectional point (# of arms, # of sections) 45 | integer, allocatable :: node(:,:) ! Nodes (# of arms, # of sections) 46 | integer, allocatable :: conn(:,:) ! Node connectivity (node #, node # to be connected)) 47 | integer, allocatable :: type_conn(:) ! Section connection type, negihbor(1) and self(2) 48 | end type JuncType 49 | 50 | ! ----------------------------------------------------------------------------- 51 | 52 | ! Boundary data structure 53 | type :: BoundType 54 | integer :: n_outer ! The number of outers 55 | integer :: n_junc ! The number of juncs 56 | 57 | type(JuncType), allocatable :: junc(:) 58 | end type BoundType 59 | 60 | ! ----------------------------------------------------------------------------- 61 | 62 | end module Data_Bound -------------------------------------------------------------------------------- /src/Data_DNA.f90: -------------------------------------------------------------------------------- 1 | ! 2 | ! ============================================================================= 3 | ! 4 | ! Module - Data_DNA 5 | ! Last Updated : 04/10/2018, by Hyungmin Jun (hyungminjun@outlook.com) 6 | ! 7 | ! ============================================================================= 8 | ! 9 | ! This is part of PERDIX, which allows scientists to build and solve 10 | ! the sequence design of complex DNAnanostructures. 11 | ! Copyright 2018 Hyungmin Jun. All rights reserved. 12 | ! 13 | ! License - GPL version 3 14 | ! PERDIX is free software: you can redistribute it and/or modify it under 15 | ! the terms of the GNU General Public License as published by the Free Software 16 | ! Foundation, either version 3 of the License, or any later version. 17 | ! PERDIX is distributed in the hope that it will be useful, but WITHOUT 18 | ! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 19 | ! FOR A PARTICULAR PURPOSE. See the GNU General Public License 20 | ! for more details. 21 | ! You should have received a copy of the GNU General Public License along with 22 | ! this program. If not, see . 23 | ! 24 | ! ----------------------------------------------------------------------------- 25 | ! 26 | module Data_DNA 27 | 28 | ! ----------------------------------------------------------------------------- 29 | 30 | ! BaseType structure 31 | type :: BaseType 32 | integer :: id ! Base ID 33 | integer :: node ! Heritage node ID 34 | integer :: up ! Upward base ID 35 | integer :: dn ! Downward base ID 36 | integer :: xover ! Possible crossover ID 37 | integer :: across ! Complementary base ID 38 | integer :: strand ! Strand ID 39 | 40 | double precision :: pos(3) ! Position vector 41 | end type BaseType 42 | 43 | ! ----------------------------------------------------------------------------- 44 | 45 | ! TopType structure (base information) 46 | type :: TopType 47 | integer :: id ! ID 48 | integer :: node ! Node ID 49 | integer :: up ! Upward strand ID 50 | integer :: dn ! Downward strand ID 51 | integer :: xover ! Crossover ID 52 | integer :: across ! Base pair ID 53 | integer :: strand ! Strand ID 54 | integer :: address ! Address number 55 | logical :: b_14nt ! nt of the 14nt seed 56 | character :: seq ! Sequence 57 | character :: status = "N" ! N-normal, X-Xover, U-unpaired nt, S-seed, F-4nt 58 | 59 | double precision :: pos(3) ! Position vector 60 | end type TopType 61 | 62 | ! ----------------------------------------------------------------------------- 63 | 64 | ! StrandType structure 65 | type :: StrandType 66 | integer :: n_base ! The number of bases in this strand 67 | integer :: n_14nt, n_4nt ! The number of 14nt and 4nt seeds 68 | logical :: b_circular ! Is it circular strand 69 | character(4) :: type1 ! Type 1 - Scaffold or staple 70 | character(6) :: type2 ! Type 2 - Edge or vertex strand 71 | 72 | integer, allocatable :: base(:) 73 | end type StrandType 74 | 75 | ! ----------------------------------------------------------------------------- 76 | 77 | ! DNA data type structure 78 | type :: DNAType 79 | integer :: n_base_scaf ! The number of bases in scaffold strands 80 | integer :: n_base_stap ! The number of bases in staple strands 81 | integer :: n_xover_scaf ! Possible centered scaffold crossover 82 | integer :: n_xover_stap ! Staple crossover 83 | integer :: n_sxover_stap ! Single staple crossover 84 | integer :: n_scaf ! The number of scaffold strands 85 | integer :: n_stap ! The number of staple strands 86 | integer :: n_top ! The number of top data 87 | integer :: n_strand ! The number of strands 88 | 89 | double precision :: len_ave_stap ! Average staple length 90 | integer :: n_14nt, n_s14nt, n_4nt, n_only_4nt ! The number of 14nt and 4nt seeds 91 | integer :: n_nt_14nt, n_nt_4nt ! The number of nucleotides in 14nt and 4nt domains 92 | integer :: n_tot_region, n_tot_14nt, n_tot_4nt ! the total number of 14nt and 4nt seeds 93 | integer :: len_min_stap, len_max_stap 94 | integer :: n_unpaired_scaf, n_nt_unpaired_scaf 95 | integer :: n_unpaired_stap, n_nt_unpaired_stap 96 | integer :: graph_node, graph_edge 97 | integer :: min_xover_scaf, min_xover_stap 98 | 99 | type(BaseType), allocatable :: base_scaf(:) ! Base in scaffold strand 100 | type(BaseType), allocatable :: base_stap(:) ! Base in staple strand 101 | type(TopType), allocatable :: top(:) ! dnatop 102 | type(StrandType), allocatable :: strand(:) ! Strand 103 | integer, allocatable :: order_stap(:,:) ! Staple ordering 104 | end type DNAType 105 | 106 | ! ----------------------------------------------------------------------------- 107 | 108 | end module Data_DNA -------------------------------------------------------------------------------- /src/Data_Geom.f90: -------------------------------------------------------------------------------- 1 | ! 2 | ! ============================================================================= 3 | ! 4 | ! Module - Data_Geom 5 | ! Last Updated : 04/10/2018, by Hyungmin Jun (hyungminjun@outlook.com) 6 | ! 7 | ! ============================================================================= 8 | ! 9 | ! This is part of PERDIX, which allows scientists to build and solve 10 | ! the sequence design of complex DNAnanostructures. 11 | ! Copyright 2018 Hyungmin Jun. All rights reserved. 12 | ! 13 | ! License - GPL version 3 14 | ! PERDIX is free software: you can redistribute it and/or modify it under 15 | ! the terms of the GNU General Public License as published by the Free Software 16 | ! Foundation, either version 3 of the License, or any later version. 17 | ! PERDIX is distributed in the hope that it will be useful, but WITHOUT 18 | ! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 19 | ! FOR A PARTICULAR PURPOSE. See the GNU General Public License 20 | ! for more details. 21 | ! You should have received a copy of the GNU General Public License along with 22 | ! this program. If not, see . 23 | ! 24 | ! ----------------------------------------------------------------------------- 25 | ! 26 | module Data_Geom 27 | 28 | ! ----------------------------------------------------------------------------- 29 | 30 | ! Section data for arbitrary cross-section 31 | type :: SecType 32 | character(len=10) :: types ! Lattice type, squre or honeycomb 33 | 34 | integer :: dir ! Section convection of caDNAnano 35 | integer :: maxR, minR ! Maximum and minimum row 36 | integer :: maxC, minC ! Maximum and minimum column 37 | integer :: n_row, n_col ! Size of row and column 38 | integer :: ref_row ! Reference row to set t-axis 39 | integer :: ref_maxC, ref_minC ! Maximum and minimum column in reference row 40 | 41 | integer, allocatable :: id(:) ! Section ID 42 | integer, allocatable :: posR(:) ! Row position number 43 | integer, allocatable :: posC(:) ! Column position number 44 | 45 | ! Connetivity for self connection route 46 | ! -1 : neighbor connection, num : section number to be connected for self-connection 47 | integer, allocatable :: conn(:) 48 | end type SecType 49 | 50 | ! ----------------------------------------------------------------------------- 51 | 52 | ! Point type data structure 53 | type :: PointType 54 | double precision :: pos(3) ! Position vector 55 | double precision :: ori_pos(3) ! Original position vector 56 | end type PointType 57 | 58 | ! ----------------------------------------------------------------------------- 59 | 60 | ! Line type data structure 61 | type :: LineType 62 | integer :: iniL ! Inital line number 63 | integer :: sec ! Cross-section ID 64 | integer :: iniP(2) ! Initial point connectivity 65 | integer :: poi(2) ! Point connectivity 66 | integer :: neiF(2) ! Neighbor faces (direction) 67 | integer :: neiP(2, 2) ! Neighbor points (point number, direction) 68 | integer :: neiL(2, 2) ! Neighbor lines (point number, direction) 69 | ! Point number : 1 - starting, 2 - ending 70 | ! Direction : 1 - left, 2 - right 71 | integer :: n_xover ! The number of scaffold crossovers 72 | double precision :: t(3, 3) ! Local vector at the center 73 | end type LineType 74 | 75 | ! ----------------------------------------------------------------------------- 76 | 77 | ! Face type data structure 78 | type :: FaceType 79 | integer :: n_poi ! The number of points 80 | integer, allocatable :: poi(:) ! Connectivity 81 | end type FaceType 82 | 83 | ! ----------------------------------------------------------------------------- 84 | 85 | ! Geometry data type to manage section, point, line and face data 86 | type :: Geomtype 87 | integer :: n_sec ! The number of sections 88 | integer :: n_iniP, n_modP, n_croP ! The number of initial, modified and sectional points 89 | integer :: n_iniL, n_croL ! The number of initial, sectional lines 90 | integer :: n_face ! The number of faces 91 | integer :: min_edge_length 92 | integer :: max_edge_length 93 | 94 | type(SecType) :: sec ! Section 95 | type(PointType), allocatable :: iniP(:) ! Initial points 96 | type(PointType), allocatable :: modP(:) ! Modified points 97 | type(PointType), allocatable :: croP(:) ! Cross-sectional points 98 | type(LineType), allocatable :: iniL(:) ! Initial lines 99 | type(LineType), allocatable :: croL(:) ! Cross-sectional lines 100 | type(FaceType), allocatable :: face(:) ! Face 101 | end type Geomtype 102 | 103 | ! ----------------------------------------------------------------------------- 104 | 105 | end module Data_Geom -------------------------------------------------------------------------------- /src/Data_Mesh.f90: -------------------------------------------------------------------------------- 1 | ! 2 | ! ============================================================================= 3 | ! 4 | ! Module - Data_Mesh 5 | ! Last Updated : 04/10/2018, by Hyungmin Jun (hyungminjun@outlook.com) 6 | ! 7 | ! ============================================================================= 8 | ! 9 | ! This is part of PERDIX, which allows scientists to build and solve 10 | ! the sequence design of complex DNAnanostructures. 11 | ! Copyright 2018 Hyungmin Jun. All rights reserved. 12 | ! 13 | ! License - GPL version 3 14 | ! PERDIX is free software: you can redistribute it and/or modify it under 15 | ! the terms of the GNU General Public License as published by the Free Software 16 | ! Foundation, either version 3 of the License, or any later version. 17 | ! PERDIX is distributed in the hope that it will be useful, but WITHOUT 18 | ! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 19 | ! FOR A PARTICULAR PURPOSE. See the GNU General Public License 20 | ! for more details. 21 | ! You should have received a copy of the GNU General Public License along with 22 | ! this program. If not, see . 23 | ! 24 | ! ----------------------------------------------------------------------------- 25 | ! 26 | module Data_Mesh 27 | 28 | ! ----------------------------------------------------------------------------- 29 | 30 | ! Node(base pair) data type structure 31 | type :: NodeType 32 | integer :: id ! Node ID 33 | integer :: bp ! Base pair ID 34 | integer :: up ! Upward ID 35 | integer :: dn ! Downward ID 36 | integer :: sec ! Section ID 37 | integer :: iniL ! Initial line ID 38 | integer :: croL ! Cross-section line ID 39 | integer :: mitered ! Mitered node, 1: mitered node 40 | 41 | ! Nodal connectivity at the section 42 | ! -1 - no-connection, 1 - neighbor, 2 - self, 3 - modified neighbor, 4 - modified self 43 | integer :: conn = -1 44 | 45 | ! Ghost node : -1 : normal node, 1 : ghost node to be deleted 46 | integer :: ghost 47 | 48 | double precision :: pos(3) ! Position vector 49 | double precision :: ori(3, 3) ! Orientation vector 50 | end type NodeType 51 | 52 | ! ElementType structure 53 | type :: EleType 54 | integer :: cn(2) ! Connectivity 55 | end type EleType 56 | 57 | ! ----------------------------------------------------------------------------- 58 | 59 | ! MeshType data structure 60 | type :: MeshType 61 | integer :: n_node = 0 ! The number of nodes 62 | integer :: n_ele = 0 ! The number of elements 63 | integer :: n_mitered ! The number of mitered nodes 64 | 65 | type(NodeType), allocatable :: node(:) ! Node array 66 | type(EleType), allocatable :: ele(:) ! Element array 67 | end type 68 | 69 | ! ----------------------------------------------------------------------------- 70 | 71 | end module Data_Mesh -------------------------------------------------------------------------------- /src/Data_Prob.f90: -------------------------------------------------------------------------------- 1 | ! 2 | ! ============================================================================= 3 | ! 4 | ! Module - Data_Prob 5 | ! Last Updated : 04/10/2018, by Hyungmin Jun (hyungminjun@outlook.com) 6 | ! 7 | ! ============================================================================= 8 | ! 9 | ! This is part of PERDIX, which allows scientists to build and solve 10 | ! the sequence design of complex DNAnanostructures. 11 | ! Copyright 2018 Hyungmin Jun. All rights reserved. 12 | ! 13 | ! License - GPL version 3 14 | ! PERDIX is free software: you can redistribute it and/or modify it under 15 | ! the terms of the GNU General Public License as published by the Free Software 16 | ! Foundation, either version 3 of the License, or any later version. 17 | ! PERDIX is distributed in the hope that it will be useful, but WITHOUT 18 | ! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 19 | ! FOR A PARTICULAR PURPOSE. See the GNU General Public License 20 | ! for more details. 21 | ! You should have received a copy of the GNU General Public License along with 22 | ! this program. If not, see . 23 | ! 24 | ! ----------------------------------------------------------------------------- 25 | ! 26 | module Data_Prob 27 | 28 | ! ----------------------------------------------------------------------------- 29 | 30 | ! Problem type data structure 31 | type :: ProbType 32 | integer :: sel_prob ! Number for pre-defined problem 33 | integer :: sel_vertex ! Mitered or non-mitered 34 | integer :: sel_sec ! Number for pre-defined cross-section 35 | integer :: sel_bp_edge ! Number for pre-defined # of base pairs on edges 36 | integer :: sel_edge ! Specific edge number to set as reference 37 | integer :: n_bp_edge ! The number of bps each edge 38 | 39 | integer :: color(3) ! Problem color, [52, 152, 219] 40 | integer :: n_cng_min_stap = 0 ! The number of changing parameter for minimum staple length 41 | integer :: n_cng_max_stap = 0 ! The number of changing parameter for maximum staple length 42 | double precision :: scale ! Problem scale for post-processing(atomic model) 43 | double precision :: size ! Problem size for post-processing(cylindrical model) 44 | double precision :: move_x ! To adjust center position 45 | double precision :: move_y ! To adjust conter position 46 | 47 | character(200) :: name_file ! File name 48 | character(200) :: name_prob ! Problem name 49 | character(10) :: type_file ! File type 50 | character(10) :: type_geo = "closed" ! Geometric type, open or closed 51 | character(200) :: path_work ! Working directory path 52 | end type ProbType 53 | 54 | ! ----------------------------------------------------------------------------- 55 | 56 | end module Data_Prob -------------------------------------------------------------------------------- /src/List.f90: -------------------------------------------------------------------------------- 1 | ! 2 | ! ============================================================================= 3 | ! 4 | ! Module - List 5 | ! Last Updated : 04/10/2018, by Hyungmin Jun (hyungminjun@outlook.com) 6 | ! 7 | ! ============================================================================= 8 | ! 9 | ! This is part of PERDIX, which allows scientists to build and solve 10 | ! the sequence design of complex DNAnanostructures. 11 | ! Copyright 2018 Hyungmin Jun. All rights reserved. 12 | ! 13 | ! License - GPL version 3 14 | ! PERDIX is free software: you can redistribute it and/or modify it under 15 | ! the terms of the GNU General Public License as published by the Free Software 16 | ! Foundation, either version 3 of the License, or any later version. 17 | ! PERDIX is distributed in the hope that it will be useful, but WITHOUT 18 | ! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 19 | ! FOR A PARTICULAR PURPOSE. See the GNU General Public License 20 | ! for more details. 21 | ! You should have received a copy of the GNU General Public License along with 22 | ! this program. If not, see . 23 | ! 24 | ! ----------------------------------------------------------------------------- 25 | ! 26 | module List 27 | 28 | implicit none 29 | 30 | public List_Insert_Conn 31 | public List_Insert_Junc 32 | public List_Insert_Base 33 | public List_Insert_Scaf 34 | public List_Delete_Conn 35 | public List_Delete_Junc 36 | public List_Delete_Base 37 | public List_Delete_Scaf 38 | public List_Count_Junc 39 | public List_Count_Base 40 | public List_Count_Scaf 41 | 42 | type :: ListConn ! Linked list data for line connectivity 43 | integer :: point(2) 44 | type(ListConn), pointer :: next 45 | end type ListConn 46 | 47 | type :: ListJunc ! Linked list data for junctions 48 | integer :: n_arm 49 | integer :: cnL(100) 50 | integer :: poi_c 51 | type(ListJunc), pointer :: next 52 | end type ListJunc 53 | 54 | type :: ListBase ! Linked list data for base 55 | integer :: id 56 | type(ListBase), pointer :: next 57 | end type ListBase 58 | 59 | type :: ListScaf ! Linked list data for scaffold strand 60 | integer :: id 61 | type(ListScaf), pointer :: next 62 | end type ListScaf 63 | 64 | contains 65 | 66 | ! ----------------------------------------------------------------------------- 67 | 68 | ! Insert list for connection 69 | function List_Insert_Conn(head, elem) result(list) 70 | type(ListConn), pointer, intent(in) :: head 71 | type(ListConn), pointer, intent(inout) :: elem 72 | 73 | type(ListConn), pointer :: list 74 | 75 | ! Insert in the head position 76 | elem%next => head 77 | 78 | ! Return list 79 | list => elem 80 | end function List_Insert_Conn 81 | 82 | ! ----------------------------------------------------------------------------- 83 | 84 | ! Insert list for junction 85 | function List_Insert_Junc(head, elem) result(list) 86 | type(ListJunc), pointer, intent(in) :: head 87 | type(ListJunc), pointer, intent(in) :: elem 88 | 89 | type(ListJunc), pointer :: list 90 | 91 | ! Insert in the head position 92 | elem%next => head 93 | 94 | ! Return list 95 | list => elem 96 | end function List_Insert_Junc 97 | 98 | ! ----------------------------------------------------------------------------- 99 | 100 | ! Insert list for base 101 | function List_Insert_Base(head, elem) result(list) 102 | type(ListBase), pointer, intent(in) :: head 103 | type(ListBase), pointer, intent(in) :: elem 104 | 105 | type(ListBase), pointer :: list 106 | 107 | ! Insert in the head position 108 | elem%next => head 109 | 110 | ! Return list 111 | list => elem 112 | end function List_Insert_Base 113 | 114 | ! ----------------------------------------------------------------------------- 115 | 116 | ! Insert list for scaffold strand 117 | function List_Insert_Scaf(head, elem) result(list) 118 | type(ListScaf), pointer, intent(in) :: head 119 | type(ListScaf), pointer, intent(in) :: elem 120 | 121 | type(ListScaf), pointer :: list 122 | 123 | ! Insert in the head position 124 | elem%next => head 125 | 126 | ! Return list 127 | list => elem 128 | end function List_Insert_Scaf 129 | 130 | ! ----------------------------------------------------------------------------- 131 | 132 | ! Delete list for connection 133 | subroutine List_Delete_Conn(self) 134 | type(ListConn), pointer :: self 135 | type(ListConn), pointer :: current 136 | type(ListConn), pointer :: next 137 | 138 | current => self 139 | do while (associated(current)) 140 | 141 | next => current%next 142 | if(associated(current)) then 143 | deallocate(current) 144 | nullify(self) 145 | end if 146 | deallocate(current) 147 | nullify(current) 148 | current => next 149 | end do 150 | end subroutine List_Delete_Conn 151 | 152 | ! ----------------------------------------------------------------------------- 153 | 154 | ! Delete list for junction 155 | subroutine List_Delete_Junc(self) 156 | type(ListJunc), pointer :: self 157 | type(ListJunc), pointer :: current 158 | type(ListJunc), pointer :: next 159 | 160 | current => self 161 | do while (associated(current)) 162 | 163 | next => current%next 164 | if(associated(current)) then 165 | deallocate(current) 166 | nullify(self) 167 | end if 168 | deallocate(current) 169 | nullify(current) 170 | current => next 171 | end do 172 | end subroutine List_Delete_Junc 173 | 174 | ! ----------------------------------------------------------------------------- 175 | 176 | ! Delete list for base 177 | subroutine List_Delete_Base(self) 178 | type(ListBase), pointer :: self 179 | type(ListBase), pointer :: current 180 | type(ListBase), pointer :: next 181 | 182 | current => self 183 | do while (associated(current)) 184 | next => current%next 185 | if(associated(current)) then 186 | deallocate(current) 187 | nullify(self) 188 | end if 189 | deallocate(current) 190 | nullify(current) 191 | current => next 192 | end do 193 | end subroutine List_Delete_Base 194 | 195 | ! ----------------------------------------------------------------------------- 196 | 197 | ! Delete list for scaffold 198 | subroutine List_Delete_Scaf(self) 199 | type(ListScaf), pointer :: self 200 | type(ListScaf), pointer :: current 201 | type(ListScaf), pointer :: next 202 | 203 | current => self 204 | do while (associated(current)) 205 | 206 | next => current%next 207 | if(associated(current)) then 208 | deallocate(current) 209 | nullify(self) 210 | end if 211 | deallocate(current) 212 | nullify(current) 213 | current => next 214 | end do 215 | end subroutine List_Delete_Scaf 216 | 217 | ! ----------------------------------------------------------------------------- 218 | 219 | ! Count junction list 220 | function List_Count_Junc(head) result(count) 221 | type(ListJunc), pointer, intent(in) :: head 222 | 223 | type(ListJunc), pointer :: ptr 224 | integer :: count 225 | 226 | ptr => head 227 | 228 | ! Loop for counting 229 | count = 0 230 | do while(associated(ptr)) 231 | ptr => ptr%next 232 | count = count + 1 233 | end do 234 | end function List_Count_Junc 235 | 236 | ! ----------------------------------------------------------------------------- 237 | 238 | ! Count base list 239 | function List_Count_Base(head) result(count) 240 | type(ListBase), pointer, intent(in) :: head 241 | 242 | type(ListBase), pointer :: ptr 243 | integer :: count 244 | 245 | ptr => head 246 | 247 | ! Loop for counting 248 | count = 0 249 | do while(associated(ptr)) 250 | ptr => ptr%next 251 | count = count + 1 252 | end do 253 | end function List_Count_Base 254 | 255 | ! ----------------------------------------------------------------------------- 256 | 257 | ! Count scaffold list 258 | function List_Count_Scaf(head) result(count) 259 | type(ListScaf), pointer, intent(in) :: head 260 | 261 | type(ListScaf), pointer :: ptr 262 | integer :: count 263 | 264 | ptr => head 265 | 266 | ! Loop for counting 267 | count = 0 268 | do while(associated(ptr)) 269 | ptr => ptr%next 270 | count = count + 1 271 | end do 272 | end function List_Count_Scaf 273 | 274 | ! ----------------------------------------------------------------------------- 275 | 276 | end module List --------------------------------------------------------------------------------