diff --git a/src/Mod/Fem/femsolver/calculix/solver.py b/src/Mod/Fem/femsolver/calculix/solver.py index f6bfd07bb6..3ccc833dcc 100644 --- a/src/Mod/Fem/femsolver/calculix/solver.py +++ b/src/Mod/Fem/femsolver/calculix/solver.py @@ -198,19 +198,19 @@ def add_attributes(obj, ccx_prefs): ehl = ccx_prefs.GetFloat("EigenmodeHighLimit", 1000000.0) obj.EigenmodeHighLimit = (ehl, 0.0, 1000000.0, 10000.0) - if not hasattr(obj, "IterationsThermoMechMaximum"): - help_string_IterationsThermoMechMaximum = ( - "Maximum Number of thermo mechanical iterations " + if not hasattr(obj, "IterationsMaximum"): + help_string_IterationsMaximum = ( + "Maximum Number of iterations " "in each time step before stopping jobs" ) obj.addProperty( "App::PropertyIntegerConstraint", - "IterationsThermoMechMaximum", + "IterationsMaximum", "Fem", - help_string_IterationsThermoMechMaximum + help_string_IterationsMaximum ) niter = ccx_prefs.GetInt("AnalysisMaxIterations", 200) - obj.IterationsThermoMechMaximum = niter + obj.IterationsMaximum = niter if not hasattr(obj, "BucklingFactors"): obj.addProperty( @@ -242,6 +242,26 @@ def add_attributes(obj, ccx_prefs): eni = ccx_prefs.GetFloat("AnalysisTime", 1.0) obj.TimeEnd = eni + if not hasattr(obj, "TimeMinimumStep"): + obj.addProperty( + "App::PropertyFloatConstraint", + "TimeMinimumStep", + "Fem", + "Minimum time step" + ) + mini = ccx_prefs.GetFloat("AnalysisTimeMinimumStep", 0.00001) + obj.TimeMinimumStep = mini + + if not hasattr(obj, "TimeMaximumStep"): + obj.addProperty( + "App::PropertyFloatConstraint", + "TimeMaximumStep", + "Fem", + "Maximum time step" + ) + maxi = ccx_prefs.GetFloat("AnalysisTimeMaximumStep", 1.0) + obj.TimeMaximumStep = maxi + if not hasattr(obj, "ThermoMechSteadyState"): obj.addProperty( "App::PropertyBool", @@ -332,7 +352,7 @@ def add_attributes(obj, ccx_prefs): if not hasattr(obj, "IterationsUserDefinedTimeStepLength"): help_string_IterationsUserDefinedTimeStepLength = ( "Set to True to use the user defined time steps. " - "The time steps are set with TimeInitialStep and TimeEnd" + "They are set with TimeInitialStep, TimeEnd, TimeMinimum and TimeMaximum" ) obj.addProperty( "App::PropertyBool",