Source code for OpenPisco.ExternalTools.Aster.AsterThermoElasticWriter

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

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

from OpenPisco.ExternalTools.Aster.AsterCommonWriter import WriteVariable

[docs]def WriteMecaModelisation(writeFile:TextIO,dimensionality:int): """Write mechanical modelisation in file Parameters ---------- writeFile : TextIO currently opened parameter file dimensionality : int problem dimensionality, correspond to dimension of the mesh (either 2 or 3) """ asterModelisationKeyword={2:'D_PLAN',3:'3D'}[dimensionality] writeFile.write("modelisation_meca = {'MODELISATION':('"+asterModelisationKeyword+"', ),'PHENOMENE':'MECANIQUE','TOUT':'OUI'}\n")
[docs]def WriteThermalModelisation(writeFile:TextIO,dimensionality:int): """Write thermal modelisation in file Parameters ---------- writeFile : TextIO currently opened parameter file dimensionality : int problem dimensionality, correspond to dimension of the mesh (either 2 or 3) """ asterModelisationKeyword={2:'PLAN',3:'3D'}[dimensionality] writeFile.write("modelisation_thermal = {'MODELISATION':('"+asterModelisationKeyword+"', ),'PHENOMENE':'THERMIQUE','TOUT':'OUI'}\n")
[docs]def WriteMaterialParametersInput(writeFile:TextIO,materials:Dict): """Write material parameters input in file Young modulus ("young"), poisson ratio ("poisson"), thermal conductivity ("lambda"), density ("rho") and thermal capacity ("cp"), thermal expansion coefficient ("thermalExpansion") and reference temperature ("referenceTemperature") are mandatory for each material. Example: import OpenPisco.ExternalTools.Aster.AsterCommonWriter as AsterCommonWriter writeFile = AsterCommonWriter.OpenAsterParamFile("myFile.param") materialProperties={"lambda":50.0,"rho":7850.0,"cp":1046.0,"young":210000.0,"poisson":0.3,"thermalExpansion":11E-6,"referenceTemperature":20.0} materials = [['AllZones',materialProperties]] WriteMaterialParametersInput(writeFile,material) AsterCommonWriter.CloseAsterParamFile(writeFile) Parameters ---------- writeFile : TextIO currently opened parameter file materials : Dict materials description (element tag followed by parameters value for each material) """ affeMater=[] for numMater,(tagname,material) in enumerate(materials): WriteVariable(writeFile,variableName='lambda_'+str(numMater),variableValue=material["lambda"]) rho_cp = material["rho"]*material["cp"] WriteVariable(writeFile,variableName='rho_cp_'+str(numMater),variableValue=rho_cp) WriteVariable(writeFile,variableName='young_modulus_'+str(numMater),variableValue=material["young"]) WriteVariable(writeFile,variableName='poisson_number_'+str(numMater),variableValue=material["poisson"]) WriteVariable(writeFile,variableName='alpha_'+str(numMater),variableValue=material["thermalExpansion"]) WriteVariable(writeFile,variableName='reference_temperature_'+str(numMater),variableValue=material["referenceTemperature"]) value={} value["LAMBDA"]="lambda_"+str(numMater) value["RHO_CP"]="rho_cp_"+str(numMater) valueElas = {} valueElas["E"]="young_modulus_"+str(numMater) valueElas["NU"]="poisson_number_"+str(numMater) valueElas["ALPHA"]="alpha_"+str(numMater) writeFile.write('mater_'+str(numMater)+' = DEFI_MATERIAU(THER=_F('+','.join([ key+"="+value[key] for key in value.keys()])+'), ELAS=_F('+','.join([ key+"="+valueElas[key] for key in valueElas.keys()])+'))\n') if tagname=='AllZones': affeMater.append("_F(MATER=("+'mater_'+str(numMater)+", ),TOUT=\'OUI\')") else: affeMater.append("_F(MATER=("+'mater_'+str(numMater)+", ),GROUP_MA=(\""+str(tagname)+"\",))") writeFile.write('materials = {\'AFFE\' :'+str(affeMater).replace("\'_","_").replace(")\'",")").replace("\"_","_").replace(")\"",")").replace("\"\'","\"")+',}\n')