Newer
Older

Nicolas Marsic
committed
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Group{
Omega = Region[1]; // Domain
Bndry = Region[2]; // Boundary
}
Function{
// Physical data //
C0 = 299792458; // [m/s]
// Eigenvalue solver data //
DefineConstant[nEig = 10, // [-]
target = 8e17]; // [(rad/s)^2]
}
Jacobian{
{ Name JVol;
Case{
{ Region All; Jacobian Vol; }
}
}
}
Integration{
{ Name IP2;
Case{
{ Type Gauss;
Case{
{ GeoElement Line; NumberOfPoints 2; }
{ GeoElement Triangle; NumberOfPoints 3; }
{ GeoElement Tetrahedron; NumberOfPoints 4; }
}
}
}
}
}
Constraint{
{ Name Dirichlet; Type Assign;
Case{
{ Region Bndry; Value 0; }
}
}
}
FunctionSpace{
{ Name HCurl; Type Form1;
BasisFunction{ // Nedelec
{ Name se; NameOfCoef ee; Function BF_Edge;
Support Omega; Entity EdgesOf[All]; }
}
Constraint{
{ NameOfCoef ee; EntityType EdgesOf; NameOfConstraint Dirichlet; }
}
}
}
Formulation{
{ Name Eig; Type FemEquation;
Quantity{
{ Name e; Type Local; NameOfSpace HCurl; }
}
Equation{
Galerkin{ [ Dof{d e} , {d e}];
In Omega; Integration IP2; Jacobian JVol; }
Galerkin{ DtDtDof[1/C0^2 * Dof{ e} , { e}];
In Omega; Integration IP2; Jacobian JVol; }
}
}
}
Resolution{
{ Name Eig;
System{
{ Name A; NameOfFormulation Eig; Type Complex; }
}
Operation{
GenerateSeparate[A];
EigenSolve[A, nEig, target, 0];
}
}
}
PostProcessing{
{ Name Eig; NameOfFormulation Eig;
Quantity{
{ Name e; Value{ Local{ [{e}]; In Omega; Jacobian JVol; } } }
}
}
}
PostOperation{
{ Name Eig; NameOfPostProcessing Eig;
Operation{
Print[e, OnElementsOf Omega, File "eig.pos", EigenvalueLegend];
}
}
}