From 489b10666a09aa6e3cd1d9b08ede3361b52f25a0 Mon Sep 17 00:00:00 2001 From: FLE_Knight <ujwalkishore.jinaga@uliege.be> Date: Wed, 4 Jun 2025 19:34:12 +0200 Subject: [PATCH] [MINOR PATCH] Minor correction to a StochTMDMN euler angle function. Changed TMDMNIPvariable to ThermoMechanicsDG3DIPVariableBase to get tangents. --- dG3D/src/computeWithMaterialLaw.cpp | 8 ++++---- dG3D/src/dG3DMaterialLaw.h | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/dG3D/src/computeWithMaterialLaw.cpp b/dG3D/src/computeWithMaterialLaw.cpp index 958b900b3..15fb46b8b 100644 --- a/dG3D/src/computeWithMaterialLaw.cpp +++ b/dG3D/src/computeWithMaterialLaw.cpp @@ -432,7 +432,7 @@ void computeMaterialLaw::getTangent_dPdF(fullMatrix<double>& _dPdF){ _dPdF.resize(9,9); _dPdF.setAll(0.); IPVariable* ipv = _ips->getState(IPStateBase::current); - StochDMNDG3DIPVariable* ipvcur = dynamic_cast<StochDMNDG3DIPVariable*>(ipv); + ThermoMechanicsDG3DIPVariableBase* ipvcur = dynamic_cast<ThermoMechanicsDG3DIPVariableBase*>(ipv); const STensor43& dPdF = ipvcur->getConstRefToTangentModuli(); for(int i=0; i<3; i++) @@ -453,7 +453,7 @@ void computeMaterialLaw::getTangents_dPdT_dQdT_dQdF_dQdH_dPdH(fullVector<double> _dPdH.resize(9,3); _dPdH.setAll(0.); IPVariable* ipv = _ips->getState(IPStateBase::current); - StochTMDMNDG3DIPVariable* ipvcur = dynamic_cast<StochTMDMNDG3DIPVariable*>(ipv); + ThermoMechanicsDG3DIPVariableBase* ipvcur = dynamic_cast<ThermoMechanicsDG3DIPVariableBase*>(ipv); const STensor3& dPdT = ipvcur->getConstRefTodPdT(); const SVector3& dQdT = ipvcur->getConstRefTodThermalFluxdT(); @@ -485,7 +485,7 @@ void computeMaterialLaw::getCombinedTangents_dPQdFHT_dPQdFH(fullMatrix<double>& _dPQdFH.resize(12,12); _dPQdFH.setAll(0.); IPVariable* ipv = _ips->getState(IPStateBase::current); - StochTMDMNDG3DIPVariable* ipvcur = dynamic_cast<StochTMDMNDG3DIPVariable*>(ipv); + ThermoMechanicsDG3DIPVariableBase* ipvcur = dynamic_cast<ThermoMechanicsDG3DIPVariableBase*>(ipv); const STensor43& dPdF = ipvcur->getConstRefToTangentModuli(); const STensor3& dPdT = ipvcur->getConstRefTodPdT(); @@ -553,7 +553,7 @@ double computeMaterialLaw::get3rdDependentVariable(){ double computeMaterialLaw::getSpecificHeat(){ if(!_flag_isothermal){ IPVariable* ipv = _ips->getState(IPStateBase::current); - StochTMDMNDG3DIPVariable* ipvcur = dynamic_cast<StochTMDMNDG3DIPVariable*>(ipv); + ThermoMechanicsDG3DIPVariableBase* ipvcur = dynamic_cast<ThermoMechanicsDG3DIPVariableBase*>(ipv); return ipvcur->getConstRefToExtraDofFieldCapacityPerUnitField()(0); } else{ diff --git a/dG3D/src/dG3DMaterialLaw.h b/dG3D/src/dG3DMaterialLaw.h index 1ca18fe93..506dcddc8 100644 --- a/dG3D/src/dG3DMaterialLaw.h +++ b/dG3D/src/dG3DMaterialLaw.h @@ -784,7 +784,12 @@ class StochDMNDG3DMaterialLaw : public dG3DMaterialLaw{ virtual void reset_Parameter(const char* Para); virtual void reset_Parameter(std::vector<double>& Para_EulerAngles); virtual void set_flag_DMN_response_rotation(const bool flag_rotation, const int type_of_R){_flag_rotation = flag_rotation; _type_of_R = type_of_R;}; - virtual void set_euler_angles_user_input(const double alpha, const double beta, const double gamma){_alpha = alpha; _beta = beta; _gamma = gamma;}; + virtual void set_euler_angles_user_input(const double alpha, const double beta, const double gamma){ + if(_type_of_R == 2){_alpha = alpha; _beta = beta; _gamma = gamma;} + else{ + Msg::Error("Use set_flag_DMN_response_rotation to set_type_of_R == 2 to use this feature."); + } + }; }; // FLE @@ -837,7 +842,12 @@ class StochTMDMNDG3DMaterialLaw : public StochDMNDG3DMaterialLaw{ virtual void reset_Parameter(const char* Para); virtual void set_flag_DMN_response_rotation(const bool flag_rotation, const int type_of_R){_flag_rotation = flag_rotation; _type_of_R = type_of_R;}; virtual void writeMatrixToCSV(const fullMatrix<double>& matrix, const double& nrows, const double& ncols, const std::string& filename); - virtual void set_euler_angles_user_input(const double alpha, const double beta, const double gamma){_alpha = alpha; _beta = beta; _gamma = gamma;}; + virtual void set_euler_angles_user_input(const double alpha, const double beta, const double gamma){ + if(_type_of_R == 2){_alpha = alpha; _beta = beta; _gamma = gamma;} + else{ + Msg::Error("Use set_flag_DMN_response_rotation to set_type_of_R == 2 to use this feature."); + } + }; }; // FLE -- GitLab