{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Generate force 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": "markdown", "metadata": {}, "source": [ "Instantiate path manager" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "from cfdmod.use_cases.pressure.path_manager import CfPathManager\n", "import pathlib\n", "\n", "path_manager = CfPathManager(output_path=pathlib.Path(\"./output/pressure\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read parameters file" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'measurement_1': CfConfig(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'))], bodies=[BodyConfig(name='building2', sub_bodies=ZoningModel(x_intervals=[-inf, inf], y_intervals=[-inf, inf], z_intervals=[0.0, 10.0, 20.0]))], directions=['x', 'y', 'z'], transformation=TransformationConfig(translation=(0, 0, 0), rotation=(0.0, 0.0, 0.0), fixed_point=(0, 0, 0))),\n", " 'measurement_2': CfConfig(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'))], bodies=[BodyConfig(name='marquise', sub_bodies=ZoningModel(x_intervals=[-inf, inf], y_intervals=[-inf, inf], z_intervals=[0.0, 10.0, 20.0])), BodyConfig(name='lanternim', sub_bodies=ZoningModel(x_intervals=[-inf, inf], y_intervals=[-inf, inf], z_intervals=[0.0, 10.0, 20.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": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from cfdmod.use_cases.pressure.force.Cf_config import CfCaseConfig\n", "\n", "config_path = pathlib.Path(\"./fixtures/tests/pressure/Cf_params.yaml\")\n", "post_proc_cfg = CfCaseConfig.from_file(config_path)\n", "\n", "post_proc_cfg.force_coefficient" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read Mesh from file" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((1549, 3), (2915, 3))" ] }, "execution_count": 7, "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 force coefficient" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[37m[2024-05-23 15:39:21,869] [INFO] - cfdmod - Processing Cf config measurement_1 ... (1997722511.py:7)\u001b[39m\n", "\u001b[37m[2024-05-23 15:39:22,960] [INFO] - cfdmod - Processed Cf config measurement_1! (1997722511.py:25)\u001b[39m\n", "\u001b[37m[2024-05-23 15:39:22,961] [INFO] - cfdmod - Processing Cf config measurement_2 ... (1997722511.py:7)\u001b[39m\n", "\u001b[37m[2024-05-23 15:39:23,952] [INFO] - cfdmod - Processed Cf config measurement_2! (1997722511.py:25)\u001b[39m\n" ] } ], "source": [ "from cfdmod.logger import logger\n", "from cfdmod.use_cases.pressure.force.Cf_data import CommonOutput, process_Cf\n", "\n", "cp_path = pathlib.Path(\"./fixtures/tests/pressure/data/cp_t.normalized.h5\")\n", "\n", "for cfg_label, cfg in post_proc_cfg.force_coefficient.items():\n", " logger.info(f\"Processing Cf config {cfg_label} ...\")\n", "\n", " cf_output_dict: dict[str, CommonOutput] = process_Cf(\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, cf_output in cf_output_dict.items():\n", " path_manager.direction_label = direction_lbl\n", " if already_saved:\n", " cf_output.save_outputs(cfg_label=cfg_label, path_manager=path_manager)\n", " else:\n", " cf_output.save_region_info(cfg_label=cfg_label, path_manager=path_manager)\n", " cf_output.save_outputs(cfg_label=cfg_label, path_manager=path_manager)\n", " already_saved = True\n", "\n", " logger.info(f\"Processed Cf 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 }