├── .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 | [](https://youtu.be/iyrlIFPLrd8) | [](https://youtu.be/o_7dMVGPxPw) | [](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 |
21 |
--------------------------------------------------------------------------------
/make/input/svg/liberty.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
101 |
--------------------------------------------------------------------------------
/make/input/svg/svg14.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
81 |
--------------------------------------------------------------------------------
/make/input/svg/svg3.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
133 |
--------------------------------------------------------------------------------
/make/input/svg/svg4.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
109 |
--------------------------------------------------------------------------------
/make/input/svg/svg5.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
95 |
--------------------------------------------------------------------------------
/make/input/svg/svg7.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
144 |
--------------------------------------------------------------------------------
/make/input/svg/test.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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
--------------------------------------------------------------------------------