FEM: Add support for amplitudes with CalculiX (#22851)

This commit is contained in:
FEA-eng
2025-08-01 22:22:01 +02:00
committed by GitHub
parent c41c50e946
commit 79e6d8f016
41 changed files with 202 additions and 32 deletions

View File

@@ -148,6 +148,16 @@ ConstraintDisplacement::ConstraintDisplacement()
"ConstraintDisplacement",
App::Prop_None,
"Rotation in local Z direction");
ADD_PROPERTY_TYPE(EnableAmplitude,
(false),
"ConstraintDisplacement",
(App::PropertyType)(App::Prop_None),
"Amplitude of the displacement boundary condition");
ADD_PROPERTY_TYPE(AmplitudeValues,
(std::vector<std::string> {"0, 0", "1, 1"}),
"ConstraintFDisplacement",
(App::PropertyType)(App::Prop_None),
"Amplitude values");
}
App::DocumentObjectExecReturn* ConstraintDisplacement::execute()

View File

@@ -40,6 +40,9 @@ public:
/// Constructor
ConstraintDisplacement();
App::PropertyBool EnableAmplitude;
App::PropertyStringList AmplitudeValues;
// Displacement parameters
App::PropertyDistance xDisplacement;
App::PropertyDistance yDisplacement;

View File

@@ -54,6 +54,16 @@ ConstraintForce::ConstraintForce()
// by default use the null vector to indicate an invalid value
naturalDirectionVector = Base::Vector3d(0, 0, 0);
ADD_PROPERTY_TYPE(EnableAmplitude,
(false),
"ConstraintForce",
(App::PropertyType)(App::Prop_None),
"Amplitude of the force load");
ADD_PROPERTY_TYPE(AmplitudeValues,
(std::vector<std::string> {"0, 0", "1, 1"}),
"ConstraintForce",
(App::PropertyType)(App::Prop_None),
"Amplitude values");
}
App::DocumentObjectExecReturn* ConstraintForce::execute()

View File

@@ -38,6 +38,8 @@ public:
/// Constructor
ConstraintForce();
App::PropertyBool EnableAmplitude;
App::PropertyStringList AmplitudeValues;
App::PropertyForce Force;
App::PropertyLinkSub Direction;
App::PropertyBool Reversed;

View File

@@ -56,6 +56,16 @@ ConstraintHeatflux::ConstraintHeatflux()
App::Prop_None,
"Cavity radiation");
ADD_PROPERTY_TYPE(CavityName, ("cav"), "ConstraintHeatflux", App::Prop_None, "Cavity name");
ADD_PROPERTY_TYPE(EnableAmplitude,
(false),
"ConstraintHeatflux",
(App::PropertyType)(App::Prop_None),
"Amplitude of the heat flux load");
ADD_PROPERTY_TYPE(AmplitudeValues,
(std::vector<std::string> {"0, 0", "1, 1"}),
"ConstraintHeatflux",
(App::PropertyType)(App::Prop_None),
"Amplitude values");
}
App::DocumentObjectExecReturn* ConstraintHeatflux::execute()

View File

@@ -39,6 +39,9 @@ class FemExport ConstraintHeatflux: public Fem::Constraint
public:
ConstraintHeatflux();
App::PropertyBool EnableAmplitude;
App::PropertyStringList AmplitudeValues;
App::PropertyTemperature AmbientTemp;
/*App::PropertyFloat FaceTemp;*/
App::PropertyThermalTransferCoefficient FilmCoef;

View File

@@ -34,6 +34,16 @@ ConstraintPressure::ConstraintPressure()
{
ADD_PROPERTY(Pressure, (0.0));
ADD_PROPERTY(Reversed, (0));
ADD_PROPERTY_TYPE(EnableAmplitude,
(false),
"ConstraintPressure",
(App::PropertyType)(App::Prop_None),
"Amplitude of the pressure load");
ADD_PROPERTY_TYPE(AmplitudeValues,
(std::vector<std::string> {"0, 0", "1, 1"}),
"ConstraintPressure",
(App::PropertyType)(App::Prop_None),
"Amplitude values");
}
App::DocumentObjectExecReturn* ConstraintPressure::execute()

View File

@@ -37,6 +37,8 @@ class FemExport ConstraintPressure: public Fem::Constraint
public:
ConstraintPressure();
App::PropertyBool EnableAmplitude;
App::PropertyStringList AmplitudeValues;
App::PropertyPressure Pressure;
App::PropertyBool Reversed;

View File

@@ -44,6 +44,16 @@ ConstraintTemperature::ConstraintTemperature()
(App::PropertyType)(App::Prop_None),
"Type of constraint, temperature or concentrated heat flux");
ConstraintType.setEnums(ConstraintTypes);
ADD_PROPERTY_TYPE(EnableAmplitude,
(false),
"ConstraintTemperature",
(App::PropertyType)(App::Prop_None),
"Amplitude of the temperature boundary condition");
ADD_PROPERTY_TYPE(AmplitudeValues,
(std::vector<std::string> {"0, 0", "1, 1"}),
"ConstraintTemperature",
(App::PropertyType)(App::Prop_None),
"Amplitude values");
}
App::DocumentObjectExecReturn* ConstraintTemperature::execute()

View File

@@ -40,6 +40,9 @@ public:
/// Constructor
ConstraintTemperature();
App::PropertyBool EnableAmplitude;
App::PropertyStringList AmplitudeValues;
// Temperature parameters
App::PropertyTemperature Temperature;
App::PropertyPower CFlux;