Skip to content

Commit

Permalink
Symmetrize (#99)
Browse files Browse the repository at this point in the history
* Straight curve test

Add routine to see if a curve is a straight line by checking the second derivative at a point. Add tests for that, too. See comments for limitations.

* Start mesh mirroring code.

Start adding code to mirror across a symmetry line.

* AddLineReflections

Add code to compute the reflection of a point about a line, plus tests. Put in stubs for mirroring a mesh.

* Create Symmetric Mesh

Add changes to flip a mesh about a symmetry line and add the new elements to the mesh. Only does one symmetry boundary in the model ATM. Haven't checked the mesh file yet, and edges need to be added still to handle ISM-V2.

* Add Edge reflection and reflect xPatch

Add reflection of the edges in the mesh by removing the old ones and re-computing them. Also reflect the xPatch array, which is used in the SEM plotting procedure. Finally update the makefile to include the new reflection code.

* ifort fixes

Fix ifort error regarding class/type of a variable. Fix typos.

* Symmetry Testing

Add routines to test if all curves marked symmetry are co-linear straight lines. If not, posts a warning and the mesh is not reflected.

* Fix boundary edge/curve error

Fixes a longstanding error in assigning the boundary curve to an element boundary edge. Instead of using ROW_END as a discriminant to choose which curve the two nodes fall on (a corner node can be on two curves simultaneously), it checks to see if the node is at the endpoints of its curve and if so, uses the curve attached to the other node.

* Fix boundary info curves

Make boundary curves int the boundaryInfo consistent with the defined directions.

* add missing link in the Makefile

* Add tests for symmetry reflection

Added PacMan example doing symmetry reflection to test suite. Change test on SYMMETRY_CURVE_NAME to be case insensitive.

* Update documentation

Update the documentation to include the PacMan example.

* Update the-model.md

Update to the previous to include one more file.

* Append to boundary names

Append "_R" to boundary names that are on the reflected portion of the model domain, to allow for different BCs if desired.

* Update Source/Foundation/LineReflectionModule.f90

Add literal type where it was missing.

Co-authored-by: Andrew Winters <[email protected]>

* remove Reflection figure from repo

* add image url for the new reflection figure

---------

Co-authored-by: Andrew Winters <[email protected]>
  • Loading branch information
DavidAKopriva and andrewwinters5000 authored Jun 14, 2024
1 parent 80ac66f commit f7a5e6c
Show file tree
Hide file tree
Showing 25 changed files with 1,343 additions and 34 deletions.
9 changes: 9 additions & 0 deletions Benchmarks/BenchmarkData/PacMan.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
1
94 115 208 0
3.39246E-02
1.22993E+00
1.11908E+00
1.42737E+00
2.79085E-02
7.51275E+01
1.07185E+02
1 change: 1 addition & 0 deletions Benchmarks/BenchmarkFiles.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,4 @@ Benchmarks/ControlFiles/SeaMountCubic.control
Benchmarks/ControlFiles/Box3D.control
Benchmarks/ControlFiles/Box3DRotated.control
Benchmarks/ControlFiles/BoneAndMarrow.control
Benchmarks/ControlFiles/PacMan.control
56 changes: 56 additions & 0 deletions Benchmarks/ControlFiles/PacMan.control
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
\begin{CONTROL_INPUT}

\begin{RUN_PARAMETERS}
mesh file name = Benchmarks/MeshFiles/Tests/PacMan.mesh
plot file name = Benchmarks/PlotFiles/Tests/PacMan.tec
stats file name = Benchmarks/StatsFiles/Tests/PacMan.txt
test file name = Benchmarks/BenchmarkData/PacMan.txt
mesh file format = ISM
polynomial order = 4
plot file format = skeleton
\end{RUN_PARAMETERS}

\begin{BACKGROUND_GRID}
background grid size = [0.2,0.2,0.0]
\end{BACKGROUND_GRID}

\begin{SPRING_SMOOTHER}
smoothing = ON
smoothing type = LinearAndCrossbarSpring
number of iterations = 25
\end{SPRING_SMOOTHER}

\end{CONTROL_INPUT}

\begin{MODEL}
%
% Outer boundary uses END_POINTS_LINE
%
\begin{OUTER_BOUNDARY}
\begin{END_POINTS_LINE}
name = B1
xStart = [0.0,0.0,0.0]
xEnd = [1.0,0.25,0.0]
\end{END_POINTS_LINE}
\begin{END_POINTS_LINE}
name = B2
xStart = [1.0,0.25,0.0]
xEnd = [0.6,1.25,0.0]
\end{END_POINTS_LINE}
\begin{PARAMETRIC_EQUATION_CURVE}
name = B3
xEqn = x(t) = 0.6*(1-t) - t
yEqn = y(t) = 1.25*(1 + t)*(1-t) + 0.3*t
zEqn = z(t) = 0.0
\end{PARAMETRIC_EQUATION_CURVE}
\begin{END_POINTS_LINE}
name = symmetry
xStart = [-1.0,0.3,0.0]
xEnd = [0.0,0.0,0.0]
\end{END_POINTS_LINE}

\end{OUTER_BOUNDARY}

\end{MODEL}

\end{FILE}
211 changes: 211 additions & 0 deletions Benchmarks/PlotFiles/Benchmarks/PacMan.tec
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
VARIABLES = "X", "Y", "Z"
ZONE F=FEPOINT, ET=QUADRILATERAL, N= 115 E= 94
-0.50163195500895907 0.24403185073535802 0.0000000000000000
-0.38604646394989955 0.24817692086351498 0.0000000000000000
-0.20707275983227655 0.23833744035934454 0.0000000000000000
-9.0244897019217912E-004 0.22896843095645245 0.0000000000000000
0.20848374613223924 0.23838720853332129 0.0000000000000000
0.40236738325321397 0.25438281763107862 0.0000000000000000
0.54322263870121912 0.25584726040631034 0.0000000000000000
-0.55509469985356030 0.31650560654217463 0.0000000000000000
-0.39743338123187089 0.39081392832338957 0.0000000000000000
-0.20670732548380488 0.41679556712761434 0.0000000000000000
-3.1390315883062991E-003 0.42038677074103326 0.0000000000000000
0.20148107174644772 0.42351164429357596 0.0000000000000000
0.40638719608085178 0.42501511687253396 0.0000000000000000
0.64946492657106791 0.39513730779376510 0.0000000000000000
-0.65653475571468034 0.42861353689311671 0.0000000000000000
-0.44741332552473101 0.60135940971111579 0.0000000000000000
-0.21313726551703188 0.61019336168637306 0.0000000000000000
-7.3299560129042405E-003 0.61438198716451442 0.0000000000000000
0.19701655503858070 0.61480562178070752 0.0000000000000000
0.40250741295546022 0.61816297252504926 0.0000000000000000
0.61324404819983902 0.63665646615644722 0.0000000000000000
-0.38108686540696363 0.78149357153201882 0.0000000000000000
-0.22530366386164366 0.83194658498569041 0.0000000000000000
-8.3678171353089390E-003 0.80913357189598012 0.0000000000000000
0.19064995649119995 0.81144960565438706 0.0000000000000000
0.38657357549952959 0.81415122283728503 0.0000000000000000
0.57350896643068827 0.82993067634489992 0.0000000000000000
-0.15281680902331995 0.97021227238628427 0.0000000000000000
-2.0704315389764343E-002 0.98886530589923582 0.0000000000000000
0.18606444920715431 1.0319598854316634 0.0000000000000000
0.37970402142691617 0.98882352822787922 0.0000000000000000
0.53595011954812943 1.0002338834500553 0.0000000000000000
0.27672425817674218 1.1464895492882614 0.0000000000000000
0.38964472170697850 1.1320219720746290 0.0000000000000000
0.50351821888199266 1.1181407427777330 0.0000000000000000
-0.65481651601551816 0.19644495480465546 0.0000000000000000
-0.57740825199563051 0.17322247559868914 0.0000000000000000
-0.42001147541600392 0.12600344262480118 0.0000000000000000
-0.23853208979934371 7.1559626939803112E-002 0.0000000000000000
0.0000000000000000 0.0000000000000000 0.0000000000000000
0.23529412769373090 5.8823531923432724E-002 0.0000000000000000
0.42132353490386310 0.10533088372596577 0.0000000000000000
0.58308825056502400 0.14577206264125600 0.0000000000000000
0.79154412528251195 0.19788603132062799 0.0000000000000000
1.0000000000000000 0.25000000000000000 0.0000000000000000
0.91088361761329817 0.47279095596675441 0.0000000000000000
0.82176723522659645 0.69558191193350882 0.0000000000000000
0.75452586221677387 0.86368534445806533 0.0000000000000000
0.68685344934933956 1.0328663766266510 0.0000000000000000
0.59999999999999998 1.2500000000000000 0.0000000000000000
0.39937486848256853 1.2679636753448764 0.0000000000000000
0.22408157299974779 1.2514834043992933 0.0000000000000000
0.10539579830409657 1.2232884263261647 0.0000000000000000
-7.2833602208372206E-002 1.1551089096617779 0.0000000000000000
-0.22830461610006836 1.0703029470360081 0.0000000000000000
-0.34892815151304946 0.98824403000343652 0.0000000000000000
-0.47197702805676334 0.88989474125604795 0.0000000000000000
-0.58333698956325963 0.78814207672053405 0.0000000000000000
-0.79166849478162982 0.56526342901776294 0.0000000000000000
-1.0000000000000000 0.29999999999999999 0.0000000000000000
-0.82740825800775908 0.24822247740232772 0.0000000000000000
-0.55312310963244737 7.2394668657063871E-002 0.0000000000000000
-0.45890682083717205 5.3090645726065477E-003 0.0000000000000000
-0.30407217950731963 -8.4993958557465693E-002 0.0000000000000000
-0.12679108911628104 -0.19066036953051044 0.0000000000000000
4.2832920972793537E-002 -0.31378220866483109 0.0000000000000000
0.19589415429520879 -0.43386127889560533 0.0000000000000000
0.31268279355442496 -0.51261889008300354 0.0000000000000000
-0.63765095485508683 4.1318089870419517E-002 0.0000000000000000
-0.54692911368351949 -0.10750517984877239 0.0000000000000000
-0.40200092336406518 -0.23418309247325331 0.0000000000000000
-0.23402622127520978 -0.34923719488197835 0.0000000000000000
-6.4916707602640483E-002 -0.46448095353671809 0.0000000000000000
0.10532410854133467 -0.57852850825918978 0.0000000000000000
0.32470706284716766 -0.68738890461923574 0.0000000000000000
-0.78405022920754963 3.5619585835522938E-003 0.0000000000000000
-0.70455208445337125 -0.25576978671768502 0.0000000000000000
-0.51382654002965400 -0.39210422002236722 0.0000000000000000
-0.34431142410133159 -0.50888957313024341 0.0000000000000000
-0.17394340181955606 -0.62172756774641502 0.0000000000000000
-4.2348969959272176E-003 -0.73764472731290898 0.0000000000000000
0.16152128822750933 -0.86908606708465175 0.0000000000000000
-0.74833503710050286 -0.44266700077977883 0.0000000000000000
-0.64604980284909164 -0.57054054497246964 0.0000000000000000
-0.45238060250524692 -0.67090904600381329 0.0000000000000000
-0.28750303026205526 -0.78239368352313032 0.0000000000000000
-0.12542089908054960 -0.89249702576297885 0.0000000000000000
2.1958489582556417E-002 -1.0085709131488731 0.0000000000000000
-0.66164280701191902 -0.72587438757571254 0.0000000000000000
-0.56161478031580458 -0.81416957718756500 0.0000000000000000
-0.41271310319310789 -0.96396528923587721 0.0000000000000000
-0.22730592425526031 -1.0345429573793758 0.0000000000000000
-0.10314286356076630 -1.1300760602462641 0.0000000000000000
-0.40006849048818482 -1.1094862795948286 0.0000000000000000
-0.29783163898296050 -1.1595658968918345 0.0000000000000000
-0.19512189585690498 -1.2106596396852591 0.0000000000000000
0.16405829086902340 -0.17862925749225897 0.0000000000000000
0.29376686837333577 -0.31985800470912540 0.0000000000000000
0.40655694534809017 -0.44266562141519017 0.0000000000000000
0.55190232588505417 -0.60091996667089775 0.0000000000000000
0.69724770642201839 -0.75917431192660545 0.0000000000000000
0.50021056738353087 -0.89611921146580298 0.0000000000000000
0.30317342834504368 -1.0330641110050007 0.0000000000000000
0.15450213572699556 -1.1363937438411957 0.0000000000000000
4.8778100292737880E-003 -1.2403857544402350 0.0000000000000000
-0.18715596330275219 -1.3738532110091741 0.0000000000000000
-0.36453860081448486 -1.2784145556453015 0.0000000000000000
-0.50181267083468395 -1.1681640750488123 0.0000000000000000
-0.58537878838437707 -1.0792935293020807 0.0000000000000000
-0.69664580165750956 -0.92426508850201317 0.0000000000000000
-0.77976052190152934 -0.76788340563552859 0.0000000000000000
-0.83529452832929985 -0.63297722605073159 0.0000000000000000
-0.88388618374796635 -0.48313577771462890 0.0000000000000000
-0.92084578581182264 -0.33688724410800930 0.0000000000000000
-0.97208842904765214 -3.6136351868978345E-002 0.0000000000000000
62 69 70 63
63 70 71 64
64 71 72 65
65 72 73 66
66 73 74 67
67 74 75 68
69 76 77 70
70 77 78 71
71 78 79 72
72 79 80 73
73 80 81 74
74 81 82 75
77 83 84 78
78 84 85 79
79 85 86 80
80 86 87 81
81 87 88 82
84 89 90 85
85 90 91 86
86 91 92 87
87 92 93 88
91 94 95 92
92 95 96 93
69 62 37 36
62 63 38 37
63 64 39 38
64 65 40 39
65 66 97 40
66 67 98 97
67 68 99 98
68 75 100 99
75 102 101 100
75 82 103 102
82 88 104 103
88 93 105 104
93 96 106 105
96 95 107 106
95 94 108 107
94 91 109 108
91 90 110 109
90 89 111 110
89 84 112 111
84 83 113 112
83 77 114 113
77 76 115 114
76 61 60 115
76 69 36 61
1 2 9 8
2 3 10 9
3 4 11 10
4 5 12 11
5 6 13 12
6 7 14 13
8 9 16 15
9 10 17 16
10 11 18 17
11 12 19 18
12 13 20 19
13 14 21 20
16 17 23 22
17 18 24 23
18 19 25 24
19 20 26 25
20 21 27 26
23 24 29 28
24 25 30 29
25 26 31 30
26 27 32 31
30 31 34 33
31 32 35 34
8 36 37 1
1 37 38 2
2 38 39 3
3 39 40 4
4 40 41 5
5 41 42 6
6 42 43 7
7 43 44 14
14 44 45 46
14 46 47 21
21 47 48 27
27 48 49 32
32 49 50 35
35 50 51 34
34 51 52 33
33 52 53 30
30 53 54 29
29 54 55 28
28 55 56 23
23 56 57 22
22 57 58 16
16 58 59 15
15 59 60 61
15 61 36 8
Loading

0 comments on commit f7a5e6c

Please sign in to comment.