Make PML formulation optional in PMLProps user object

这个提交包含在:
nmannall
2025-01-06 16:01:36 +00:00
父节点 d26ff3485c
当前提交 8e60484b44

查看文件

@@ -391,10 +391,12 @@ class PMLThickness(ModelUserObject):
): ):
raise ValueError(f"{self} has too many cells for the domain size") raise ValueError(f"{self} has too many cells for the domain size")
thickness = model.G.pmls["thickness"]
logger.info( logger.info(
f"PML thickness: x0={model.G.pmls['x0']}, y0={model.G.pmls['y0']}," f"PML thickness: x0={thickness['x0']}, y0={thickness['y0']},"
f" z0={model.G.pmls['z0']}, xmax={model.G.pmls['xmax']}," f" z0={thickness['z0']}, xmax={thickness['xmax']},"
f" ymax={model.G.pmls['yxmax']}, zmax={model.G.pmls['zmax']}" f" ymax={thickness['ymax']}, zmax={thickness['zmax']}"
) )
@@ -427,7 +429,7 @@ class PMLProps(ModelUserObject):
def __init__( def __init__(
self, self,
formulation: str, formulation: Optional[str] = None,
thickness: Optional[int] = None, thickness: Optional[int] = None,
x0: Optional[int] = None, x0: Optional[int] = None,
y0: Optional[int] = None, y0: Optional[int] = None,
@@ -463,7 +465,10 @@ class PMLProps(ModelUserObject):
" PMLThickness user objects instead." " PMLThickness user objects instead."
) )
if formulation is not None:
self.pml_formulation = PMLFormulation(formulation) self.pml_formulation = PMLFormulation(formulation)
else:
self.pml_formulation = None
if thickness is not None: if thickness is not None:
self.pml_thickness = PMLThickness(thickness) self.pml_thickness = PMLThickness(thickness)
@@ -477,10 +482,18 @@ class PMLProps(ModelUserObject):
): ):
self.pml_thickness = PMLThickness((x0, y0, z0, xmax, ymax, zmax)) self.pml_thickness = PMLThickness((x0, y0, z0, xmax, ymax, zmax))
else: else:
raise ValueError("Either set thickness, or all of x0, y0, z0, xmax, ymax, zmax.") self.pml_thickness = None
if self.pml_formulation is None and self.pml_thickness is None:
raise ValueError(
"Must set PML formulation or thickness. Thickness can be set by specifying all of x0, y0, z0, xmax, ymax, zmax."
)
def build(self, model): def build(self, model):
if self.pml_formulation is not None:
self.pml_formulation.build(model) self.pml_formulation.build(model)
if self.pml_thickness is not None:
self.pml_thickness.build(model) self.pml_thickness.build(model)