{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Generate moment coefficients" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following steps are performed to obtain all the artifacts for force coefficient use case:\n", "\n", "1. Read parameters file\n", "2. Read Mesh description\n", " * Its path can be specified\n", " * Or it can be obtained from the simulation configuration file\n", "3. Read data for pressure coefficient" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from cfdmod.use_cases.pressure.path_manager import CmPathManager\n", "import pathlib\n", "\n", "path_manager = CmPathManager(output_path=pathlib.Path(\"./output/pressure\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read parameters file" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "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)))})" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from cfdmod.use_cases.pressure.moment.Cm_config import CmCaseConfig\n", "\n", "config_path = pathlib.Path(\"./fixtures/tests/pressure/Cm_params.yaml\")\n", "post_proc_cfg = CmCaseConfig.from_file(config_path)\n", "\n", "post_proc_cfg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read mesh from file" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((1549, 3), (2915, 3))" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from lnas import LnasFormat\n", "\n", "mesh_path = pathlib.Path(\"./fixtures/tests/pressure/galpao/galpao.normalized.lnas\")\n", "mesh = LnasFormat.from_file(mesh_path)\n", "\n", "mesh.geometry.vertices.shape, mesh.geometry.triangles.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculate moment coefficient" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[37m[2024-05-23 15:41:19,850] [INFO] - cfdmod - Processing Cm config measurement_1 ... (2024964671.py:7)\u001b[39m\n", "\u001b[37m[2024-05-23 15:41:22,387] [INFO] - cfdmod - Processed Cm config measurement_1! (2024964671.py:24)\u001b[39m\n", "\u001b[37m[2024-05-23 15:41:22,388] [INFO] - cfdmod - Processing Cm config measurement_2 ... (2024964671.py:7)\u001b[39m\n", "\u001b[37m[2024-05-23 15:41:23,348] [INFO] - cfdmod - Processed Cm config measurement_2! (2024964671.py:24)\u001b[39m\n" ] } ], "source": [ "from cfdmod.logger import logger\n", "from cfdmod.use_cases.pressure.moment.Cm_data import CommonOutput, process_Cm\n", "\n", "cp_path = pathlib.Path(\"./fixtures/tests/pressure/data/cp_t.normalized.h5\")\n", "\n", "for cfg_label, cfg in post_proc_cfg.moment_coefficient.items():\n", " logger.info(f\"Processing Cm config {cfg_label} ...\")\n", "\n", " cm_output_dict: dict[str, CommonOutput] = process_Cm(\n", " mesh=mesh,\n", " cfg=cfg,\n", " cp_path=cp_path,\n", " bodies_definition=post_proc_cfg.bodies,\n", " )\n", " already_saved = False\n", " for direction_lbl, cm_output in cm_output_dict.items():\n", " path_manager.direction_label = direction_lbl\n", " if already_saved:\n", " cm_output.save_outputs(cfg_label=cfg_label, path_manager=path_manager)\n", " else:\n", " cm_output.save_region_info(cfg_label=cfg_label, path_manager=path_manager)\n", " cm_output.save_outputs(cfg_label=cfg_label, path_manager=path_manager)\n", " already_saved = True\n", " logger.info(f\"Processed Cm config {cfg_label}!\")" ] } ], "metadata": { "kernelspec": { "display_name": "cfdmod-XMkUSlb0-py3.10", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.11" } }, "nbformat": 4, "nbformat_minor": 2 }