Source code for OpenPisco.ExternalTools.Aster.AsterModalWriter

# -*- coding: utf-8 -*-
#
# This file is subject to the terms and conditions defined in
# file 'LICENSE', which is part of this source code package.
#
"""AsterModalWriter

This is the dedicated writer file for the modal analysis. We refer to the documentation of AsterCommonWriter for a more general perspective.
"""
from typing import TextIO,Dict,Iterable,Tuple

import OpenPisco.ExternalTools.Aster.AsterCommonWriter as AsterCommonWriter 

[docs]def WriteMaterialParametersInput(writeFile:TextIO,materials:Iterable[Tuple[str,Dict]]): """Write material parameters input for modal analysis in file. Young modulus ("young"), poisson ratio ("poisson") and density ("density") are mandatory for each material. Example: import OpenPisco.ExternalTools.Aster.AsterCommonWriter as AsterCommonWriter writeFile = AsterCommonWriter.OpenAsterParamFile("myFile.param") material1={"young":210000.0,"poisson":0.3,"density":7.85e-09} materials = [['AllZones',material1],] WriteMaterialParametersInput(writeFile,materials) AsterCommonWriter.CloseAsterParamFile(writeFile) Parameters ---------- writeFile : TextIO currently opened parameter file materials : Iterable[Iterable[str,Dict]] materials description (element tag followed by parameters value for each material) """ affe_mater=[] for num_mater,(tagname,material) in enumerate(materials): AsterCommonWriter.WriteVariable(writeFile,variableName='young_modulus_'+str(num_mater),variableValue=material["young"]) AsterCommonWriter.WriteVariable(writeFile,variableName='poisson_number_'+str(num_mater),variableValue=material["poisson"]) AsterCommonWriter.WriteVariable(writeFile,variableName='density_'+str(num_mater),variableValue=material["density"]) value={} value["E"]="young_modulus_"+str(num_mater) value["NU"]="poisson_number_"+str(num_mater) value["RHO"]="density_"+str(num_mater) writeFile.write('mater_'+str(num_mater)+' = DEFI_MATERIAU(ELAS=_F('+','.join([ key+"="+value[key] for key in value.keys()])+'))\n') if tagname=='AllZones': affe_mater.append("_F(MATER=("+'mater_'+str(num_mater)+", ),TOUT=\'OUI\')") else: affe_mater.append("_F(MATER=("+'mater_'+str(num_mater)+", ),GROUP_MA=(\""+str(tagname)+"\",))") writeFile.write('materials = {\'AFFE\' :'+str(affe_mater).replace("\'_","_").replace(")\'",")").replace("\"_","_").replace(")\"",")").replace("\"\'","\"")+',}\n')