Skip to content

Commit

Permalink
WIP (#75): Add stabilized Maxwell solve
Browse files Browse the repository at this point in the history
This augments in the SEQS solve by solving the stablized Maxwell
problem (again, in the parlance of Ostrowski and Hiptmair) for the
magnetic vector potential.
  • Loading branch information
trevilo committed Oct 20, 2021
1 parent c1f1297 commit b31ec76
Show file tree
Hide file tree
Showing 3 changed files with 330 additions and 26 deletions.
10 changes: 8 additions & 2 deletions src/em_options.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ class ElectromagneticOptions {
mfem::Array<int> conductor_domains; /**< List of volume attributes corresponding to conductors */
mfem::Array<int> neumann_bc_attr; /**< List of boundary attributes corresponding to Neumann boundary */
double nd_conductivity; /**< Non-dimensional conductivity: \frac{\sigma_0}{\omega \epsilon_0} */
double nd_frequency; /**< Non-dimensional frequency: \frac{\omega \ell}{c} */

ElectromagneticOptions()
:
Expand All @@ -77,7 +78,7 @@ class ElectromagneticOptions {
yinterp_min(0.0), yinterp_max(1.0),
top_only(false), bot_only(false),
conductor_domains(0), neumann_bc_attr(0),
nd_conductivity(1e6)
nd_conductivity(1e6), nd_frequency(0.001)
{ }

void AddElectromagneticOptions(mfem::OptionsParser &args) {
Expand Down Expand Up @@ -113,7 +114,9 @@ class ElectromagneticOptions {
args.AddOption(&neumann_bc_attr, "-nbc", "--neumann_bc",
"List of Neumann BC boundary attributes (SEQS solver only)");
args.AddOption(&nd_conductivity, "-s", "--sigma",
"Non-dimensional conductivity (sigma_0/(omega*epsilon_0))");
"Non-dimensional conductivity, sigma_0/(omega*epsilon_0) (SEQS solver only)");
args.AddOption(&nd_frequency, "-f", "--eta",
"Non-dimensional (angular) frequency, (omega*ell)/c (SEQS solver only)");
}

void print(std::ostream &out) {
Expand All @@ -132,6 +135,7 @@ class ElectromagneticOptions {
out << " nBy = " << nBy << std::endl;
out << " yinterp_min = " << yinterp_min << std::endl;
out << " yinterp_max = " << yinterp_max << std::endl;
out << std::endl;
if (qms) {
out << " Quasimagnetostatic options:" << std::endl;
out << " top_only = " << top_only << std::endl;
Expand All @@ -149,7 +153,9 @@ class ElectromagneticOptions {
}
out << ") " << std::endl;
out << " nd_conductivity = " << nd_conductivity << std::endl;
out << " nd_frequency = " << nd_frequency << std::endl;
}
out << std::endl;
}
};

Expand Down
Loading

0 comments on commit b31ec76

Please sign in to comment.