Generate moment coefficients

Generate moment coefficients#

The following steps are performed to obtain all the artifacts for force coefficient use case:

  1. Read parameters file

  2. Read Mesh description

    • Its path can be specified

    • Or it can be obtained from the simulation configuration file

  3. 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)