Skip to content

Commit

Permalink
FEM: constant vacuum permittivity, implement in elmer writer
Browse files Browse the repository at this point in the history
  • Loading branch information
berndhahnebach committed Jun 29, 2020
1 parent 43ad6aa commit d3b43aa
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/Mod/Fem/femsolver/elmer/writer.py
Expand Up @@ -95,6 +95,13 @@ def getConstant(name, unit_dimension):
return convert(CONSTS_DEF[name], unit_dimension)


def setConstant(name, quantityStr):
if name == "PermittivityOfVacuum":
theUnit = "s^4*A^2 / (m^3*kg)"
CONSTS_DEF[name] = "{} {}".format(convert(quantityStr, theUnit), theUnit)
return True


class Writer(object):

def __init__(self, solver, directory, testmode=False):
Expand All @@ -110,6 +117,7 @@ def getHandledConstraints(self):
return self._handledObjects

def write(self):
self._handleConstants()
self._handleSimulation()
self._handleHeat()
self._handleElasticity()
Expand Down Expand Up @@ -191,6 +199,21 @@ def _exportToUnv(self, groups, mesh, meshPath):
os.remove(geoPath)
os.remove(unvGmshPath)

def _handleConstants(self):
"""
redefine constants in CONSTS_DEF according constant redefine objects
"""
permittivity_objs = self._getMember("Fem::ConstantVacuumPermittivity")
if len(permittivity_objs) == 1:
Console.PrintLog("Constand permittivity overwriting.\n")
setConstant("PermittivityOfVacuum", permittivity_objs[0].VacuumPermittivity)
elif len(permittivity_objs) > 1:
Console.PrintError(
"More than one permittivity constant overwriting objects ({} objs). "
"The permittivity constant overwriting is ignored.\n"
.format(len(permittivity_objs))
)

def _handleSimulation(self):
self._simulation("Coordinate System", "Cartesian 3D")
self._simulation("Coordinate Mapping", (1, 2, 3))
Expand Down

0 comments on commit d3b43aa

Please sign in to comment.