Generate shape coefficients

Generate shape coefficients#

The following steps are performed to obtain all the artifacts for shape 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

Initialize Path Manager

[1]:
from cfdmod.use_cases.pressure.path_manager import CePathManager
import pathlib

path_manager = CePathManager(output_path=pathlib.Path("./output/pressure"))

Read post-processing Ce config file

[2]:
from cfdmod.use_cases.pressure.shape.Ce_config import CeCaseConfig

config_path = pathlib.Path("./fixtures/tests/pressure/Ce_params.yaml")
post_proc_cfg = CeCaseConfig.from_file(config_path)

post_proc_cfg
[2]:
CeCaseConfig(shape_coefficient={'measurement_1': CeConfig(statistics=[BasicStatisticModel(stats='mean', display_name=''), BasicStatisticModel(stats='rms', display_name=''), BasicStatisticModel(stats='skewness', display_name=''), BasicStatisticModel(stats='kurtosis', display_name=''), ParameterizedStatisticModel(stats='mean_eq', display_name='', params=MeanEquivalentParamsModel(scale_factor=0.61)), ParameterizedStatisticModel(stats='min', display_name='', params=ExtremeAbsoluteParamsModel(method_type='Absolute')), ParameterizedStatisticModel(stats='max', display_name='', params=ExtremePeakParamsModel(method_type='Peak', peak_factor=3.0))], zoning=ZoningConfig(global_zoning=ZoningModel(x_intervals=[0.0, 25.0, 50.0, 75.0, 100.0, 125.0, 150.0, 175.0, 200.0, 225.0, 250.0], y_intervals=[0.0, 25.0, 50.0, 75.0, 100.0, 125.0, 150.0, 175.0, 200.0], z_intervals=[0.0, 5.0, 10.0, 15.0, 20.0]), no_zoning=['t1_ym'], exclude=['p1_xp'], exceptions={'zoning1': ExceptionZoningModel(x_intervals=[0.0, 25.0, 50.0, 75.0, 100.0, 125.0, 150.0, 175.0, 200.0, 225.0, 250.0], y_intervals=[0.0, 25.0, 50.0, 75.0, 100.0, 125.0, 150.0, 175.0, 200.0], z_intervals=[0.0, 20.0], surfaces=['t2_yp'])}), sets={'lanternim': ['L1_xp', 'L2_yp', 'L3_zp_yp', 'L4_zp_ym', 'L5_ym', 'L6_xm']}, transformation=TransformationConfig(translation=(0, 0, 0), rotation=(0.0, 0.0, 0.0), fixed_point=(0, 0, 0))), 'measurement_2': CeConfig(statistics=[BasicStatisticModel(stats='mean', display_name=''), BasicStatisticModel(stats='rms', display_name=''), BasicStatisticModel(stats='skewness', display_name=''), BasicStatisticModel(stats='kurtosis', display_name=''), ParameterizedStatisticModel(stats='mean_eq', display_name='', params=MeanEquivalentParamsModel(scale_factor=0.61)), ParameterizedStatisticModel(stats='min', display_name='', params=ExtremeGumbelParamsModel(method_type='Gumbel', peak_duration=3.0, event_duration=300.0, n_subdivisions=10, non_exceedance_probability=0.78, full_scale_U_H=40.0, full_scale_characteristic_length=22.4)), ParameterizedStatisticModel(stats='max', display_name='', params=ExtremeAbsoluteParamsModel(method_type='Absolute'))], zoning=ZoningConfig(global_zoning=ZoningModel(x_intervals=[0.0, 250.0], y_intervals=[0.0, 200.0], z_intervals=[0.0, 20.0]), no_zoning=['t2_yp'], exclude=['lanternim', 't1_ym'], exceptions={}), sets={'lanternim': ['L1_xp', 'L2_yp', 'L3_zp_yp', 'L4_zp_ym', 'L5_ym', 'L6_xm']}, transformation=TransformationConfig(translation=(0, 0, 0), rotation=(0.0, 0.0, 0.0), fixed_point=(0, 0, 0))), 'measurement_3': CeConfig(statistics=[BasicStatisticModel(stats='mean', display_name=''), BasicStatisticModel(stats='rms', display_name=''), BasicStatisticModel(stats='skewness', display_name=''), BasicStatisticModel(stats='kurtosis', display_name=''), ParameterizedStatisticModel(stats='mean_eq', display_name='', params=MeanEquivalentParamsModel(scale_factor=0.61)), ParameterizedStatisticModel(stats='min', display_name='', params=ExtremeMovingAverageParamsModel(method_type='Moving Average', window_size_interval=3.0, full_scale_U_H=40.0, full_scale_characteristic_length=22.4)), ParameterizedStatisticModel(stats='max', display_name='', params=ExtremeAbsoluteParamsModel(method_type='Absolute'))], zoning=ZoningConfig(global_zoning=ZoningModel(x_intervals=[0.0, 125.0, 250.0], y_intervals=[-inf, inf], z_intervals=[-inf, inf]), no_zoning=[], exclude=[], exceptions={}), sets={}, transformation=TransformationConfig(translation=(0, 0, 0), rotation=(0.0, 0.0, 0.0), fixed_point=(0, 0, 0)))})

Read LNAS Mesh

[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))

Process shape coefficient use case

[4]:
from cfdmod.logger import logger
from cfdmod.use_cases.pressure.shape.Ce_data import CeOutput, process_Ce

cp_data_path = pathlib.Path("./fixtures/tests/pressure/data/cp_t.normalized.h5")

for cfg_label, cfg in post_proc_cfg.shape_coefficient.items():
    logger.info(f"Processing {cfg_label} ...")

    Ce_output: CeOutput = process_Ce(
        mesh=mesh,
        cfg=cfg,
        cp_path=cp_data_path,
    )

    Ce_output.save_region_info(cfg_label=cfg_label, path_manager=path_manager)
    Ce_output.save_outputs(cfg_label=cfg_label, path_manager=path_manager)
    Ce_output.export_mesh(cfg_label=cfg_label, path_manager=path_manager)
[2024-05-23 15:34:37,977] [INFO] - cfdmod - Processing measurement_1 ... (3797609262.py:7)
[2024-05-23 15:34:37,979] [INFO] - cfdmod - Getting geometry data... (Ce_data.py:151)
[2024-05-23 15:34:37,996] [DEBUG] - cfdmod - Surface p1_xp ignored! (Ce_geom.py:52)
[2024-05-23 15:34:38,034] [INFO] - cfdmod - Tabulating geometry data... (Ce_data.py:154)
[2024-05-23 15:34:38,171] [INFO] - cfdmod - Processing timesteps groups... (Ce_data.py:161)
[2024-05-23 15:34:40,125] [INFO] - cfdmod - Calculating statistics... (Ce_data.py:175)
[2024-05-23 15:34:40,163] [INFO] - cfdmod - Processing surfaces... (Ce_data.py:178)
[2024-05-23 15:34:40,677] [WARNING] - cfdmod - Region refinement is greater than data refinement. Resulted in NaN values (Ce_data.py:104)
[2024-05-23 15:34:40,732] [WARNING] - cfdmod - Region refinement is greater than data refinement. Resulted in NaN values (Ce_data.py:104)
[2024-05-23 15:34:40,838] [WARNING] - cfdmod - Region refinement is greater than data refinement. Resulted in NaN values (Ce_data.py:104)
[2024-05-23 15:34:40,887] [WARNING] - cfdmod - Region refinement is greater than data refinement. Resulted in NaN values (Ce_data.py:104)
[2024-05-23 15:34:40,996] [WARNING] - cfdmod - Region refinement is greater than data refinement. Resulted in NaN values (Ce_data.py:104)
[2024-05-23 15:34:41,318] [INFO] - cfdmod - Processed surfaces! (Ce_data.py:180)
[2024-05-23 15:34:41,463] [INFO] - cfdmod - Processing measurement_2 ... (3797609262.py:7)
[2024-05-23 15:34:41,464] [INFO] - cfdmod - Getting geometry data... (Ce_data.py:151)
[2024-05-23 15:34:41,465] [DEBUG] - cfdmod - Surface lanternim ignored! (Ce_geom.py:52)
[2024-05-23 15:34:41,487] [DEBUG] - cfdmod - Surface t1_ym ignored! (Ce_geom.py:52)
[2024-05-23 15:34:41,495] [INFO] - cfdmod - Tabulating geometry data... (Ce_data.py:154)
[2024-05-23 15:34:41,537] [INFO] - cfdmod - Processing timesteps groups... (Ce_data.py:161)
[2024-05-23 15:34:41,707] [INFO] - cfdmod - Calculating statistics... (Ce_data.py:175)
[2024-05-23 15:34:41,716] [INFO] - cfdmod - Processing surfaces... (Ce_data.py:178)
[2024-05-23 15:34:41,804] [INFO] - cfdmod - Processed surfaces! (Ce_data.py:180)
[2024-05-23 15:34:42,006] [INFO] - cfdmod - Processing measurement_3 ... (3797609262.py:7)
[2024-05-23 15:34:42,007] [INFO] - cfdmod - Getting geometry data... (Ce_data.py:151)
[2024-05-23 15:34:42,064] [INFO] - cfdmod - Tabulating geometry data... (Ce_data.py:154)
[2024-05-23 15:34:42,136] [INFO] - cfdmod - Processing timesteps groups... (Ce_data.py:161)
[2024-05-23 15:34:42,334] [INFO] - cfdmod - Calculating statistics... (Ce_data.py:175)
[2024-05-23 15:34:42,344] [INFO] - cfdmod - Processing surfaces... (Ce_data.py:178)
[2024-05-23 15:34:42,553] [INFO] - cfdmod - Processed surfaces! (Ce_data.py:180)