Generate moment coefficients#
The following steps are performed to obtain all the artifacts for force coefficient use case:
Read parameters file
Read Mesh description
Its path can be specified
Or it can be obtained from the simulation configuration file
Read data for pressure coefficient
[1]:
from cfdmod.use_cases.pressure.path_manager import CmPathManager
import pathlib
path_manager = CmPathManager(output_path=pathlib.Path("./output/pressure"))
Read parameters file
[2]:
from cfdmod.use_cases.pressure.moment.Cm_config import CmCaseConfig
config_path = pathlib.Path("./fixtures/tests/pressure/Cm_params.yaml")
post_proc_cfg = CmCaseConfig.from_file(config_path)
post_proc_cfg
[2]:
CmCaseConfig(bodies={'marquise': BodyDefinition(surfaces=['m1_yp', 'm2_zp', 'm3_zm']), 'lanternim': BodyDefinition(surfaces=['L1_xp', 'L2_yp', 'L3_zp_yp', 'L4_zp_ym', 'L5_ym', 'L6_xm']), 'building': BodyDefinition(surfaces=[])}, moment_coefficient={'measurement_1': CmConfig(statistics=[BasicStatisticModel(stats='mean', display_name=''), BasicStatisticModel(stats='rms', display_name=''), BasicStatisticModel(stats='skewness', display_name=''), BasicStatisticModel(stats='kurtosis', display_name=''), ParameterizedStatisticModel(stats='min', display_name='', params=ExtremeAbsoluteParamsModel(method_type='Absolute')), ParameterizedStatisticModel(stats='max', display_name='', params=ExtremeAbsoluteParamsModel(method_type='Absolute'))], bodies=[MomentBodyConfig(name='marquise', sub_bodies=ZoningModel(x_intervals=[-inf, inf], y_intervals=[-inf, inf], z_intervals=[-inf, inf]), lever_origin=(0.0, 10.0, 10.0))], directions=['x', 'y', 'z'], transformation=TransformationConfig(translation=(0, 0, 0), rotation=(0.0, 0.0, 0.0), fixed_point=(0, 0, 0))), 'measurement_2': CmConfig(statistics=[BasicStatisticModel(stats='mean', display_name=''), BasicStatisticModel(stats='rms', display_name=''), BasicStatisticModel(stats='skewness', display_name=''), BasicStatisticModel(stats='kurtosis', display_name=''), ParameterizedStatisticModel(stats='min', display_name='', params=ExtremeAbsoluteParamsModel(method_type='Absolute')), ParameterizedStatisticModel(stats='max', display_name='', params=ExtremeAbsoluteParamsModel(method_type='Absolute'))], bodies=[MomentBodyConfig(name='building', sub_bodies=ZoningModel(x_intervals=[-inf, inf], y_intervals=[-inf, inf], z_intervals=[0.0, 10.0, 20.0]), lever_origin=(0.0, 10.0, 10.0))], directions=['x', 'y', 'z'], transformation=TransformationConfig(translation=(0, 0, 0), rotation=(0.0, 0.0, 0.0), fixed_point=(0, 0, 0)))})
Read mesh from file
[3]:
from lnas import LnasFormat
mesh_path = pathlib.Path("./fixtures/tests/pressure/galpao/galpao.normalized.lnas")
mesh = LnasFormat.from_file(mesh_path)
mesh.geometry.vertices.shape, mesh.geometry.triangles.shape
[3]:
((1549, 3), (2915, 3))
Calculate moment coefficient
[4]:
from cfdmod.logger import logger
from cfdmod.use_cases.pressure.moment.Cm_data import CommonOutput, process_Cm
cp_path = pathlib.Path("./fixtures/tests/pressure/data/cp_t.normalized.h5")
for cfg_label, cfg in post_proc_cfg.moment_coefficient.items():
logger.info(f"Processing Cm config {cfg_label} ...")
cm_output_dict: dict[str, CommonOutput] = process_Cm(
mesh=mesh,
cfg=cfg,
cp_path=cp_path,
bodies_definition=post_proc_cfg.bodies,
)
already_saved = False
for direction_lbl, cm_output in cm_output_dict.items():
path_manager.direction_label = direction_lbl
if already_saved:
cm_output.save_outputs(cfg_label=cfg_label, path_manager=path_manager)
else:
cm_output.save_region_info(cfg_label=cfg_label, path_manager=path_manager)
cm_output.save_outputs(cfg_label=cfg_label, path_manager=path_manager)
already_saved = True
logger.info(f"Processed Cm config {cfg_label}!")
[2024-05-23 15:41:19,850] [INFO] - cfdmod - Processing Cm config measurement_1 ... (2024964671.py:7)
[2024-05-23 15:41:22,387] [INFO] - cfdmod - Processed Cm config measurement_1! (2024964671.py:24)
[2024-05-23 15:41:22,388] [INFO] - cfdmod - Processing Cm config measurement_2 ... (2024964671.py:7)
[2024-05-23 15:41:23,348] [INFO] - cfdmod - Processed Cm config measurement_2! (2024964671.py:24)