Group{ Omega = Region[1]; // Domain Bndry = Region[2]; // Boundary } Function{ // Physical data // DefineConstant[angularFreqRe = 5, // [rad/s] angularFreqIm = 0]; // [rad/s] C0 = 299792458; // [m/s] aFC[] = Complex[angularFreqRe, angularFreqIm]; // [rad/m] k[] = aFC[]/C0; // [rad/m] Printf["Angular frequency set to: %g + i*%g [rad/s]", angularFreqRe, angularFreqIm]; // Algebraic data // DefineConstant[x() = {}, // Solution b() = {}]; // Right hand side // Control data // DefineConstant[imposeRHS = 0, // Should I use an imposed RHS? doPostpro = 0, // Should I only create a view for x()? doApply = 0, // Should I only apply x(): x <- Ax? fileName = "eig.pos"]; // Postpro file name } 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 Maxwell; Type FemEquation; Quantity{ { Name e; Type Local; NameOfSpace HCurl; } } Equation{ Galerkin{ [ Dof{d e} , {d e}]; In Omega; Integration IP2; Jacobian JVol; } Galerkin{ [-k[]^2 * Dof{ e} , { e}]; In Omega; Integration IP2; Jacobian JVol; } } } } Resolution{ { Name Maxwell; System{ { Name A; NameOfFormulation Maxwell; Type Complex; } } Operation{ Generate[A]; If(imposeRHS) CopyRightHandSide[b(), A]; EndIf If(!doPostpro && !doApply) Solve[A]; CopySolution[A, x()]; EndIf If(doApply) CopySolution[x(), A]; Apply[A]; CopySolution[A, x()]; EndIf If(doPostpro) CopySolution[x(), A]; PostOperation[Maxwell]; EndIf } } } PostProcessing{ { Name Maxwell; NameOfFormulation Maxwell; Quantity{ { Name e; Value{ Local{ [{e}]; In Omega; Jacobian JVol; } } } } } } PostOperation{ { Name Maxwell; NameOfPostProcessing Maxwell; Operation{ Print[e, OnElementsOf Omega, File fileName]; } } }