Refactor writing a material to file to a seperate method

这个提交包含在:
nmannall
2024-10-10 17:49:54 +01:00
父节点 4355586328
当前提交 1572a8e823

查看文件

@@ -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,33 +449,32 @@ 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)
f"#material: {material.er:g} {material.se:g} "
f"{material.mr:g} {material.sm:g} {material.ID}\n" def output_material(self, material: Material, file: TextIOWrapper):
) file.write(
if hasattr(material, "poles"): f"#material: {material.er:g} {material.se:g} "
if "debye" in material.type: f"{material.mr:g} {material.sm:g} {material.ID}\n"
dispersionstr = "#add_dispersion_debye: " f"{material.poles:g} " )
for pole in range(material.poles): if hasattr(material, "poles"):
dispersionstr += ( if "debye" in material.type:
f"{material.deltaer[pole]:g} " f"{material.tau[pole]:g} " dispersionstr = "#add_dispersion_debye: " f"{material.poles:g} "
) for pole in range(material.poles):
elif "lorenz" in material.type: dispersionstr += f"{material.deltaer[pole]:g} " f"{material.tau[pole]:g} "
dispersionstr = f"#add_dispersion_lorenz: " f"{material.poles:g} " elif "lorenz" in material.type:
for pole in range(material.poles): dispersionstr = f"#add_dispersion_lorenz: " f"{material.poles:g} "
dispersionstr += ( for pole in range(material.poles):
f"{material.deltaer[pole]:g} " dispersionstr += (
f"{material.tau[pole]:g} " f"{material.deltaer[pole]:g} "
f"{material.alpha[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} " elif "drude" in material.type:
for pole in range(material.poles): dispersionstr = f"#add_dispersion_drude: " f"{material.poles:g} "
dispersionstr += ( for pole in range(material.poles):
f"{material.tau[pole]:g} " f"{material.alpha[pole]:g} " dispersionstr += f"{material.tau[pole]:g} " f"{material.alpha[pole]:g} "
) dispersionstr += material.ID
dispersionstr += material.ID file.write(dispersionstr + "\n")
fmaterials.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")