From 7aa82740517f8dea181ad743405919c96ed9de4f Mon Sep 17 00:00:00 2001
From: Nicolas Marsic <marsic@temf.tu-darmstadt.de>
Date: Wed, 28 Apr 2021 17:36:15 +0200
Subject: [PATCH] cavity geo

---
 GetDDM/cavity2d.geo      | 40 ++++++++++++++++++++++++++++++++++++++++
 GetDDM/cavity2d_data.geo | 26 ++++++++++++++++++++++++++
 2 files changed, 66 insertions(+)
 create mode 100644 GetDDM/cavity2d.geo
 create mode 100644 GetDDM/cavity2d_data.geo

diff --git a/GetDDM/cavity2d.geo b/GetDDM/cavity2d.geo
new file mode 100644
index 0000000..38e384b
--- /dev/null
+++ b/GetDDM/cavity2d.geo
@@ -0,0 +1,40 @@
+Include "cavity2d_data.geo";
+
+Solver.AutoMesh = -1;
+For n In {0:N_DOM-1}
+  // New subdomain
+  Delete Model;
+
+  // Allow subdomains with different lengths when N_DOM=2
+  If(N_DOM == 2 && n == 0)
+    Xstart = 0;
+    Xstep  = LX*t2Dom;
+  ElseIf(N_DOM == 2 && n == 1)
+    Xstart = LX*t2Dom;
+    Xstep  = LX*(1-t2Dom);
+  Else
+    Xstart = LX/N_DOM * n;
+    Xstep  = LX/N_DOM;
+  EndIf
+
+  Point(1) = {Xstart, 0, 0, LC};
+  l[] = Extrude{0,     LY, 0}{Point{1};   };
+  s[] = Extrude{Xstep, 0,  0}{ Line{l[1]};};
+
+  Physical Line(1*N_DOM + n+1) = l[1];     // Left interface
+  Physical Line(1*N_DOM + n+2) = s[0];     // Right interface
+  Physical Line(2*N_DOM + n+2) = s[{2,3}]; // Walls
+  Physical        Surface(n+1) = s[1];     // Domain
+
+  // Mesh
+  Transfinite Surface{s[1]};
+  Characteristic Length{PointsOf{Surface{s[1]};}} = LC;
+  If(QUAD)
+    Recombine Surface{s[1]};
+  EndIf
+  If(StrCmp(OnelabAction, "check"))
+    Mesh 2;
+    CreateDir Str(DIR);
+    Save StrCat(MSH_NAME, Sprintf("%g.msh", n));
+  EndIf
+EndFor
diff --git a/GetDDM/cavity2d_data.geo b/GetDDM/cavity2d_data.geo
new file mode 100644
index 0000000..c74940f
--- /dev/null
+++ b/GetDDM/cavity2d_data.geo
@@ -0,0 +1,26 @@
+// 2D cavity with 25 propagating modes with defautl settings //
+
+DefineConstant[
+  ANALYSIS   = {0,               Name "Input/00Type of analysis", ReadOnly 1,
+                Choices {0="Helmholtz", 1="Maxwell"}},
+
+  WAVENUMBER = {314.17,          Name "Input/0Wavenumber"},
+  LAMBDA     = {2*Pi/WAVENUMBER, Name "Input/1Wavelength", ReadOnly 1},
+  N_LAMBDA   = {20,              Name "Input/2Points per wavelength"},
+
+  LX = {0.5,  Name "Input/3X dimension"},
+  LY = {0.25, Name "Input/3Y dimension"},
+  LZ = {0.25, Name "Input/3Z dimension"},
+
+  N_DOM = {2, Name "Input/4Number of subdomains"},
+  t2Dom = 0.5,
+
+  QUAD = {0, Name "Input/5Quad mesh?", Choices{0, 1}},
+
+  DIR           = "out/",
+  MSH_BASE_NAME = "mesh_"
+];
+
+SAVE_SOLUTION = 1;
+MSH_NAME = StrCat(DIR, MSH_BASE_NAME);
+LC = LAMBDA/N_LAMBDA;
-- 
GitLab