Commit 354558f8 authored by GILLES Sebastien's avatar GILLES Sebastien
Browse files

#1350 Make the time manager policy a template of Model; and for most models...

#1350 Make the time manager policy a template of Model; and for most models remove entirely the variable case specific fields in the input data.
parent e436961b
......@@ -29,33 +29,6 @@ namespace MoReFEM
}
const std::string& TimeManager::TimeEvolutionPolicy::NameInFile()
{
static std::string ret("time_evolution_policy");
return ret;
}
const std::string& TimeManager::TimeEvolutionPolicy::Description()
{
static std::string ret("Tells which policy is used to describe time evolution.");
return ret;
}
const std::string& TimeManager::TimeEvolutionPolicy::Constraint()
{
static std::string ret( "value_in(v, {'constant_time_step', 'variable_time_step'})");
return ret;
}
const std::string& TimeManager::TimeEvolutionPolicy::DefaultValue()
{
static std::string ret("\"constant_time_step\"");
return ret;
}
const std::string& TimeManager::TimeStep::NameInFile()
{
static std::string ret("timeStep");
......
......@@ -43,53 +43,11 @@ namespace MoReFEM
//! Friendship to section parent.
using parent = Crtp::Section<self, NoEnclosingSection>;
//! \cond IGNORE_BLOCK_IN_DOXYGEN
//! \cond IGNORE_BLOCK_IN_DOXYGEN
friend parent;
//! \endcond IGNORE_BLOCK_IN_DOXYGEN
//! Tells which policy is used to describe time evolution.
struct TimeEvolutionPolicy : public Crtp::InputParameter<TimeEvolutionPolicy, self, std::string>
{
//! Name of the input parameter in Lua input file.
static const std::string& NameInFile();
//! Description of the input parameter.
static const std::string& Description();
/*!
* \return Constraint to fulfill.
*
* Might be left empty; if not the format to respect is the \a LuaOptionFile one. Hereafter some text from \a LuaOptionFile example file:
*
* An age should be greater than 0 and less than, say, 150. It is possible
* to check it with a logical expression (written in Lua). The expression
* should be written with 'v' being the variable to be checked.
* \a constraint = "v >= 0 and v < 150"
*
* It is possible to check whether a variable is in a set of acceptable
* value. This is performed with 'value_in' (a Lua function defined by \a LuaOptionFile).
* \a constraint = "value_in(v, {'Messiah', 'Water Music'})"
*
* If a vector is retrieved, the constraint must be satisfied on every
* element of the vector.
*/
static const std::string& Constraint();
/*!
* \return Default value.
*
* This is intended to be used only when the class is used to create a default file; never when no value has been given
* in the input parameter file (doing so is too much error prone...)
*
* This is given as a string; if no default value return an empty string. The value must be \a LuaOptionFile-formatted.
*/
static const std::string& DefaultValue();
};
//! Holds information related to the input parameter transient::timeStep.
struct TimeStep : public Crtp::InputParameter<TimeStep, self, double>
......@@ -264,10 +222,8 @@ namespace MoReFEM
//! Alias to the tuple of structs.
using section_content_type = std::tuple
<
TimeEvolutionPolicy,
TimeInit,
TimeStep,
MinimumTimeStep,
TimeMax
>;
......
......@@ -104,12 +104,12 @@ namespace MoReFEM
private:
//! Maximum time (should stop as soon as this time is reached.
//! Maximum time (should stop as soon as this time is reached).
double maximum_time_ = std::numeric_limits<double>::lowest();
};
///@} // \addtogroup CoreGroup
///@} // \addtogroup CoreGroup
} // namespace MoReFEM
......
......@@ -72,6 +72,9 @@ namespace MoReFEM
* \tparam DoConsiderProcessorWiseLocal2GlobalT Whether the local-2-global for processor-wise data might be required
* by at least one of the operator. In some models processor-wise is never considered (most linear models); in that
* case it's irrelevant to use up loads of memory to store them so 'no'should be given.
* \tparam TimeManagerPolicyT The time manager policy to use. Currently two options are open:
* - TimeManagerNS::Policy::ConstantTimeStep
* - TimeManagerNS::Policy::VariableTimeStep
*
* DerivedT is expected to define the following methods (otherwise the compilation will fail):
* - void InitializeStep()
......@@ -86,10 +89,11 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT = TimeManagerNS::Policy::ConstantTimeStep
>
class Model
: public Crtp::CrtpMpi<Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>>
: public Crtp::CrtpMpi<Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>>
{
public:
......@@ -99,7 +103,8 @@ namespace MoReFEM
<
DerivedT,
MoReFEMDataT,
DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2GlobalT,
TimeManagerPolicyT
>;
//! Alias to MoReFEMData.
......
......@@ -21,13 +21,14 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>
Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>
::Model(const morefem_data_type& morefem_data,
create_domain_list_for_coords a_create_domain_list_for_coords,
print_banner do_print_banner)
: Crtp::CrtpMpi<Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>>(morefem_data.GetMpi()),
: Crtp::CrtpMpi<Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>>(morefem_data.GetMpi()),
morefem_data_(morefem_data),
output_directory_(morefem_data.GetResultDirectory()),
do_print_banner_(do_print_banner)
......@@ -40,24 +41,18 @@ namespace MoReFEM
char* date_time = ctime(&now);
namespace IPL = Utilities::InputParameterListNS;
using TimeManager = InputParameter::TimeManager;
using Result = InputParameter::Result;
decltype(auto) input_data = morefem_data.GetInputParameterList();
decltype(auto) time_evolution_policy =
IPL::Extract<TimeManager::TimeEvolutionPolicy>::Value(input_data);
// \todo #574 Add new time evolution policy... To make the code cleaner we would use a factory with policy registering,
// but as there won't be that much policies it's not that huge a problem to do it manually and edit the if here
// whenever a new one is added.
if (time_evolution_policy == "constant_time_step")
time_manager_ = std::make_unique<TimeManagerInstance<TimeManagerNS::Policy::ConstantTimeStep>>(input_data);
else if (time_evolution_policy == "variable_time_step")
if constexpr(std::is_same<TimeManagerPolicyT, TimeManagerNS::Policy::VariableTimeStep>())
time_manager_ = std::make_unique<TimeManagerInstance<TimeManagerNS::Policy::VariableTimeStep>>(input_data);
else if constexpr(std::is_same<TimeManagerPolicyT, TimeManagerNS::Policy::ConstantTimeStep>())
time_manager_ = std::make_unique<TimeManagerInstance<TimeManagerNS::Policy::ConstantTimeStep>>(input_data);
else
{
assert(false && "Unknown time evolution policy!");
assert(false && "The policy is not known!");
exit(EXIT_FAILURE);
}
display_value_ = IPL::Extract<Result::DisplayValue>::Value(input_data);
......@@ -131,9 +126,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::~Model()
Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::~Model()
{
const auto& mpi = this->GetMpi();
......@@ -167,9 +163,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
bool Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::HasFinished()
bool Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::HasFinished()
{
auto& time_manager = GetNonCstTimeManager();
......@@ -187,9 +184,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>
::Initialize(create_output_dir do_create_output_dir)
{
const auto& mpi = this->GetMpi();
......@@ -289,9 +287,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::InitializeStep()
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::InitializeStep()
{
// Update time for current time step.
UpdateTime();
......@@ -312,11 +311,12 @@ namespace MoReFEM
template
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::FinalizeStep()
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::FinalizeStep()
{
// Additional operations required by DerivedT.
static_cast<DerivedT&>(*this).SupplFinalizeStep();
......@@ -327,9 +327,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::Finalize()
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::Finalize()
{
const auto& mpi = this->GetMpi();
......@@ -365,9 +366,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>
::Run(create_output_dir do_create_output_dir)
{
auto& crtp_helper = static_cast<DerivedT&>(*this);
......@@ -394,9 +396,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
inline const Mesh& Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>
inline const Mesh& Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>
::GetMesh(unsigned int mesh_index) const
{
return Internal::MeshNS::MeshManager::GetInstance(__FILE__, __LINE__).GetMesh(mesh_index);
......@@ -407,9 +410,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
inline Mesh& Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>
inline Mesh& Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>
::GetNonCstMesh(unsigned int mesh_index) const
{
return Internal::MeshNS::MeshManager::GetInstance(__FILE__, __LINE__).GetNonCstMesh(mesh_index);
......@@ -420,9 +424,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
const GodOfDof& Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::GetGodOfDof(unsigned int unique_id) const
const GodOfDof& Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::GetGodOfDof(unsigned int unique_id) const
{
return GodOfDofManager::GetInstance(__FILE__, __LINE__).GetGodOfDof(unique_id);
}
......@@ -432,9 +437,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
inline TimeManager& Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::GetNonCstTimeManager()
inline TimeManager& Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::GetNonCstTimeManager()
{
assert(!(!time_manager_));
return *time_manager_;
......@@ -445,9 +451,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
inline const TimeManager& Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::GetTimeManager() const
inline const TimeManager& Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::GetTimeManager() const
{
assert(!(!time_manager_));
return *time_manager_;
......@@ -458,9 +465,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
const std::string& Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::GetOutputDirectory() const
const std::string& Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::GetOutputDirectory() const
{
assert(!output_directory_.empty());
return output_directory_;
......@@ -477,9 +485,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::UpdateTime()
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::UpdateTime()
{
time_manager_->IncrementTime();
}
......@@ -489,9 +498,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::PrintNewTimeIterationBanner() const
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::PrintNewTimeIterationBanner() const
{
const auto& mpi = this->GetMpi();
......@@ -512,9 +522,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
unsigned int Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::GetDisplayValue() const
unsigned int Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::GetDisplayValue() const
{
return display_value_;
}
......@@ -524,9 +535,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
std::map<unsigned int, std::string> Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>
std::map<unsigned int, std::string> Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>
::CreateMeshDataDirectory(create_output_dir do_create_output_dir) const
{
......@@ -565,9 +577,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::SetClearGodOfDofTemporaryDataToFalse()
void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::SetClearGodOfDofTemporaryDataToFalse()
{
do_clear_god_of_dof_temporary_data_after_initialize_ = false;
}
......@@ -577,9 +590,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
inline void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>
inline void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>
::SetDoPrintNewTimeIterationBanner(bool do_print) noexcept
{
do_print_new_time_iteration_banner_ = do_print;
......@@ -590,9 +604,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
inline void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::CreateDomainListForCoords()
inline void Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::CreateDomainListForCoords()
{
{
auto& domain_manager = DomainManager::CreateOrGetInstance(__FILE__, __LINE__);
......@@ -642,9 +657,10 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
bool Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::DoPrintBanner() const noexcept
bool Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::DoPrintBanner() const noexcept
{
switch(do_print_banner_)
{
......@@ -663,10 +679,11 @@ namespace MoReFEM
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
inline const typename Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::morefem_data_type&
Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT>::GetMoReFEMData() const noexcept
inline const typename Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::morefem_data_type&
Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>::GetMoReFEMData() const noexcept
{
return morefem_data_;
}
......
......@@ -4,12 +4,6 @@
-- transient
transient = {
-- Tells which policy is used to describe time evolution.
-- Expected format: "VALUE"
-- Constraint: value_in(v, {'constant_time_step', 'variable_time_step'}})
time_evolution_policy = "constant_time_step",
-- Time at the beginning of the code (in seconds).
-- Expected format: VALUE
-- Constraint: v >= 0.
......@@ -19,11 +13,7 @@ transient = {
-- Expected format: VALUE
-- Constraint: v > 0.
timeStep = 0.1,
-- Minimum time step between two iterations, in seconds.
-- Expected format: VALUE
-- Constraint: v > 0.
minimum_time_step = 0.1,
-- Maximum time, if set to zero run a static case.
-- Expected format: VALUE
......
......@@ -4,11 +4,7 @@
-- transient
transient = {
-- Tells which policy is used to describe time evolution.
-- Expected format: "VALUE"
-- Constraint: value_in(v, {'constant_time_step', 'variable_time_step'}})
time_evolution_policy = "constant_time_step",
-- Time at the beginning of the code (in seconds).
-- Expected format: VALUE
-- Constraint: v >= 0.
......@@ -19,11 +15,7 @@ transient = {
-- Expected format: VALUE
-- Constraint: v > 0.
timeStep = 0.1,
-- Minimum time step between two iterations, in seconds.
-- Expected format: VALUE
-- Constraint: v > 0.
minimum_time_step = 0.1,
-- Maximum time, if set to zero run a static case.
-- Expected format: VALUE
......
......@@ -4,11 +4,7 @@
-- transient
transient = {
-- Tells which policy is used to describe time evolution.
-- Expected format: "VALUE"
-- Constraint: value_in(v, {'constant_time_step', 'variable_time_step'}})
time_evolution_policy = "constant_time_step",
-- Time at the beginning of the code (in seconds).
-- Expected format: VALUE
......@@ -20,11 +16,7 @@ transient = {
-- Expected format: VALUE
-- Constraint: v > 0.
timeStep = 0.1,
-- Minimum time step between two iterations, in seconds.
-- Expected format: VALUE
-- Constraint: v > 0.
minimum_time_step = 0.1,
-- Maximum time.
-- Expected format: VALUE
......
......@@ -4,11 +4,7 @@
-- transient
transient = {
-- Tells which policy is used to describe time evolution.
-- Expected format: "VALUE"
-- Constraint: value_in(v, {'constant_time_step', 'variable_time_step'}})
time_evolution_policy = "constant_time_step",
-- Time at the beginning of the code (in seconds).
-- Expected format: VALUE
......@@ -19,11 +15,7 @@ transient = {
-- Expected format: VALUE
-- Constraint: v > 0.
timeStep = 0.1,
-- Minimum time step between two iterations, in seconds.
-- Expected format: VALUE
-- Constraint: v > 0.
minimum_time_step = 0.1,
-- Maximum time.
-- Expected format: VALUE
......
......@@ -3,10 +3,7 @@
transient = {
-- Tells which policy is used to describe time evolution.
-- Expected format: "VALUE"
-- Constraint: value_in(v, {'constant_time_step', 'variable_time_step'}})
time_evolution_policy = "constant_time_step",
-- Time at the beginning of the code (in seconds).
-- Expected format: VALUE
......@@ -17,11 +14,7 @@ transient = {
-- Expected format: VALUE
-- Constraint: v > 0.
timeStep = 0.1,
-- Minimum time step between two iterations, in seconds.
-- Expected format: VALUE
-- Constraint: v > 0.
minimum_time_step = 0.1,
-- Maximum time, if set to zero run a static case.
-- Expected format: VALUE
......