你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-08 07:24:19 +08:00
Refactor writing a material to file to a seperate method
这个提交包含在:
@@ -19,6 +19,7 @@
|
|||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
from io import TextIOWrapper
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
@@ -448,7 +449,10 @@ class GeometryObjects:
|
|||||||
for numID in range(minmat, maxmat + 1):
|
for numID in range(minmat, maxmat + 1):
|
||||||
for material in G.materials:
|
for material in G.materials:
|
||||||
if material.numID == numID:
|
if material.numID == numID:
|
||||||
fmaterials.write(
|
self.output_material(material, fmaterials)
|
||||||
|
|
||||||
|
def output_material(self, material: Material, file: TextIOWrapper):
|
||||||
|
file.write(
|
||||||
f"#material: {material.er:g} {material.se:g} "
|
f"#material: {material.er:g} {material.se:g} "
|
||||||
f"{material.mr:g} {material.sm:g} {material.ID}\n"
|
f"{material.mr:g} {material.sm:g} {material.ID}\n"
|
||||||
)
|
)
|
||||||
@@ -456,9 +460,7 @@ class GeometryObjects:
|
|||||||
if "debye" in material.type:
|
if "debye" in material.type:
|
||||||
dispersionstr = "#add_dispersion_debye: " f"{material.poles:g} "
|
dispersionstr = "#add_dispersion_debye: " f"{material.poles:g} "
|
||||||
for pole in range(material.poles):
|
for pole in range(material.poles):
|
||||||
dispersionstr += (
|
dispersionstr += f"{material.deltaer[pole]:g} " f"{material.tau[pole]:g} "
|
||||||
f"{material.deltaer[pole]:g} " f"{material.tau[pole]:g} "
|
|
||||||
)
|
|
||||||
elif "lorenz" in material.type:
|
elif "lorenz" in material.type:
|
||||||
dispersionstr = f"#add_dispersion_lorenz: " f"{material.poles:g} "
|
dispersionstr = f"#add_dispersion_lorenz: " f"{material.poles:g} "
|
||||||
for pole in range(material.poles):
|
for pole in range(material.poles):
|
||||||
@@ -470,11 +472,9 @@ class GeometryObjects:
|
|||||||
elif "drude" in material.type:
|
elif "drude" in material.type:
|
||||||
dispersionstr = f"#add_dispersion_drude: " f"{material.poles:g} "
|
dispersionstr = f"#add_dispersion_drude: " f"{material.poles:g} "
|
||||||
for pole in range(material.poles):
|
for pole in range(material.poles):
|
||||||
dispersionstr += (
|
dispersionstr += f"{material.tau[pole]:g} " f"{material.alpha[pole]:g} "
|
||||||
f"{material.tau[pole]:g} " f"{material.alpha[pole]:g} "
|
|
||||||
)
|
|
||||||
dispersionstr += material.ID
|
dispersionstr += material.ID
|
||||||
fmaterials.write(dispersionstr + "\n")
|
file.write(dispersionstr + "\n")
|
||||||
|
|
||||||
|
|
||||||
class MPIGeometryObjects(GeometryObjects):
|
class MPIGeometryObjects(GeometryObjects):
|
||||||
@@ -580,32 +580,6 @@ class MPIGeometryObjects(GeometryObjects):
|
|||||||
|
|
||||||
# Write materials list to a text file
|
# Write materials list to a text file
|
||||||
if self.comm.rank == 0:
|
if self.comm.rank == 0:
|
||||||
with open(self.filename_materials, "w") as fmaterials:
|
with open(self.filename_materials, "w") as materials_file:
|
||||||
for material in global_materials:
|
for material in global_materials:
|
||||||
fmaterials.write(
|
self.output_material(material, materials_file)
|
||||||
f"#material: {material.er:g} {material.se:g} "
|
|
||||||
f"{material.mr:g} {material.sm:g} {material.ID}\n"
|
|
||||||
)
|
|
||||||
if hasattr(material, "poles"):
|
|
||||||
if "debye" in material.type:
|
|
||||||
dispersionstr = "#add_dispersion_debye: " f"{material.poles:g} "
|
|
||||||
for pole in range(material.poles):
|
|
||||||
dispersionstr += (
|
|
||||||
f"{material.deltaer[pole]:g} " f"{material.tau[pole]:g} "
|
|
||||||
)
|
|
||||||
elif "lorenz" in material.type:
|
|
||||||
dispersionstr = f"#add_dispersion_lorenz: " f"{material.poles:g} "
|
|
||||||
for pole in range(material.poles):
|
|
||||||
dispersionstr += (
|
|
||||||
f"{material.deltaer[pole]:g} "
|
|
||||||
f"{material.tau[pole]:g} "
|
|
||||||
f"{material.alpha[pole]:g} "
|
|
||||||
)
|
|
||||||
elif "drude" in material.type:
|
|
||||||
dispersionstr = f"#add_dispersion_drude: " f"{material.poles:g} "
|
|
||||||
for pole in range(material.poles):
|
|
||||||
dispersionstr += (
|
|
||||||
f"{material.tau[pole]:g} " f"{material.alpha[pole]:g} "
|
|
||||||
)
|
|
||||||
dispersionstr += material.ID
|
|
||||||
fmaterials.write(dispersionstr + "\n")
|
|
||||||
|
在新工单中引用
屏蔽一个用户