Commit b58abd1a authored by DIAZ Jerome's avatar DIAZ Jerome Committed by GILLES Sebastien

#1418 Clean up the test to use the bare minimum of operators to reproduce the...

#1418 Clean up the test to use the bare minimum of operators to reproduce the Matlab reference case.
parent 4a0521f0
......@@ -77,12 +77,11 @@ namespace MoReFEM
face4 = 5,
face5 = 6,
face6 = 7,
face456 = 8,
full_mesh = 9,
all_faces = 10,
edge1 = 11,
edge2 = 12,
edge3 = 13
full_mesh = 8,
all_faces = 9,
edge1 = 10,
edge2 = 11,
edge3 = 12
};
//! \copydoc doxygen_hide_boundary_condition_enum
......@@ -98,13 +97,12 @@ namespace MoReFEM
enum class FEltSpaceIndex
{
highest_dimension = 1,
surface_pressure = 2,
face1 = 3,
face2 = 4,
face3 = 5,
face4 = 6,
face5 = 7,
face6 = 8
face1 = 2,
face2 = 3,
face3 = 4,
face4 = 5,
face5 = 6,
face6 = 7
};
//! \copydoc doxygen_hide_solver_enum
......@@ -143,7 +141,6 @@ namespace MoReFEM
InputDataNS::Domain<EnumUnderlyingType(DomainIndex::face4)>,
InputDataNS::Domain<EnumUnderlyingType(DomainIndex::face5)>,
InputDataNS::Domain<EnumUnderlyingType(DomainIndex::face6)>,
InputDataNS::Domain<EnumUnderlyingType(DomainIndex::face456)>,
InputDataNS::Domain<EnumUnderlyingType(DomainIndex::highest_dimension)>,
InputDataNS::Domain<EnumUnderlyingType(DomainIndex::all_faces)>,
InputDataNS::Domain<EnumUnderlyingType(DomainIndex::edge1)>,
......@@ -155,7 +152,6 @@ namespace MoReFEM
InputDataNS::DirichletBoundaryCondition<EnumUnderlyingType(BoundaryConditionIndex::edge3)>,
InputDataNS::FEltSpace<EnumUnderlyingType(FEltSpaceIndex::highest_dimension)>,
InputDataNS::FEltSpace<EnumUnderlyingType(FEltSpaceIndex::surface_pressure)>,
InputDataNS::FEltSpace<EnumUnderlyingType(FEltSpaceIndex::face1)>,
InputDataNS::FEltSpace<EnumUnderlyingType(FEltSpaceIndex::face2)>,
InputDataNS::FEltSpace<EnumUnderlyingType(FEltSpaceIndex::face3)>,
......@@ -187,8 +183,6 @@ namespace MoReFEM
InputDataNS::Microsphere::OutOfPlaneFiberDispersionI6,
InputDataNS::Microsphere::FiberStiffnessDensityI6,
InputDataNS::Source::StaticPressure,
InputDataNS::Result
>;
......
......@@ -110,8 +110,6 @@ namespace MoReFEM
void Model::SupplFinalize()
{
auto& variational_formulation = GetNonCstVariationalFormulation();
variational_formulation.WasTangentQuadratic();
}
} // namespace TestNS::Microsphere
......
......@@ -67,10 +67,7 @@ namespace MoReFEM
vector_velocity_at_newton_iteration_ = std::make_unique<GlobalVector>(system_rhs);
matrix_tangent_stiffness_ = std::make_unique<GlobalMatrix>(system_matrix);
vector_static_following_pressure_residual_ = std::make_unique<GlobalVector>(system_rhs);
matrix_tangent_static_following_pressure_ = std::make_unique<GlobalMatrix>(system_matrix);
vector_current_displacement_ = std::make_unique<GlobalVector>(system_rhs);
vector_current_velocity_ = std::make_unique<GlobalVector>(system_rhs);
vector_midpoint_position_ = std::make_unique<GlobalVector>(system_rhs);
......@@ -88,10 +85,6 @@ namespace MoReFEM
decltype(auto) domain_manager = DomainManager::GetInstance(__FILE__, __LINE__);
decltype(auto) domain_static_pressure =
domain_manager.GetDomain(EnumUnderlyingType(DomainIndex::face456),
__FILE__, __LINE__);
unsigned int degree_of_exactness = 2;
unsigned int shape_function_order = 1;
......@@ -111,11 +104,6 @@ namespace MoReFEM
fiberI6.Initialize(quadrature_rule_per_topology_parameter_.get());
static_pressure_ =
InitScalarParameterFromInputData<InputDataNS::Source::StaticPressure>("StaticPressure",
domain_static_pressure,
input_data);
decltype(auto) domain_full_mesh =
DomainManager::GetInstance(__FILE__, __LINE__).GetDomain(EnumUnderlyingType(DomainIndex::full_mesh), __FILE__, __LINE__);
......@@ -127,48 +115,6 @@ namespace MoReFEM
domain_full_mesh,
felt_space_volume.GetQuadratureRulePerTopology());
tangent_quadratic_verification_file_ =
parent::GetResultDirectory() + "/tangent_quadratic_verification.txt";
const auto& mpi = GetMpi();
if (mpi.IsRootProcessor())
{
if (FilesystemNS::File::DoExist(GetTangentQuadraticVerificationFile()))
{
FilesystemNS::File::Remove(GetTangentQuadraticVerificationFile(), __FILE__, __LINE__);
}
if (!FilesystemNS::File::DoExist(GetTangentQuadraticVerificationFile()))
{
std::ofstream stream;
FilesystemNS::File::Create(stream, GetTangentQuadraticVerificationFile(), __FILE__, __LINE__);
stream << "Time | Newton iteration | Residual norm at current iteration | Previous residual norm square\n\n";
stream << "===========================================\n";
stream << "Static\n";
stream << "===========================================\n";
namespace ipl = Utilities::InputDataNS;
using ip_petsc = InputDataNS::Petsc<1>; //#892 hardcoded.
const unsigned int max_iteration = IPL::Extract<typename ip_petsc::MaxIteration>::Value(input_data);
std::stringstream temp;
temp << max_iteration;
stew_iteration_size_ = static_cast<int>(temp.str().size());
using TimeManager = InputDataNS::TimeManager;
double time_max = IPL::Extract<TimeManager::TimeMax>::Value(input_data);
temp.clear();
temp.str(std::string());
temp << (GetTimeManager().GetTimeStep() + time_max);
stew_time_size_ = static_cast<int>(temp.str().size());
}
}
mpi.Barrier();
DefineStaticOperators(input_data);
}
......@@ -178,7 +124,6 @@ namespace MoReFEM
{
const auto& god_of_dof = GetGodOfDof();
const auto& felt_space_volume = god_of_dof.GetFEltSpace(EnumUnderlyingType(FEltSpaceIndex::highest_dimension));
const auto& felt_space_surface_static_pressure = god_of_dof.GetFEltSpace(EnumUnderlyingType(FEltSpaceIndex::surface_pressure));
const auto& felt_space_face1 = god_of_dof.GetFEltSpace(EnumUnderlyingType(FEltSpaceIndex::face1));
const auto& felt_space_face2 = god_of_dof.GetFEltSpace(EnumUnderlyingType(FEltSpaceIndex::face2));
const auto& felt_space_face3 = god_of_dof.GetFEltSpace(EnumUnderlyingType(FEltSpaceIndex::face3));
......@@ -194,7 +139,6 @@ namespace MoReFEM
hyperelastic_law_parent::Create(GetSolid());
InputMicrosphere* raw_input_microsphere = input_microsphere_.get();
stiffness_operator_ =
......@@ -207,14 +151,6 @@ namespace MoReFEM
quadrature_rule_per_topology_for_operators_.get(),
raw_input_microsphere);
static_following_pressure_operator_ =
std::make_unique<GVO::FollowingPressure<ParameterNS::TimeDependencyNS::None>>(felt_space_surface_static_pressure,
displacement_ptr,
displacement_ptr,
GetStaticPressure(),
nullptr);
decltype(auto) domain_force_face_1 =
DomainManager::GetInstance(__FILE__, __LINE__).GetDomain(EnumUnderlyingType(DomainIndex::face1), __FILE__, __LINE__);
......@@ -476,8 +412,6 @@ namespace MoReFEM
if (newton_iteration == 0)
{
auto& matrix_tangent_static_following_pressure = GetNonCstMatrixTangentStaticFollowingPressure();
auto& vector_static_following_pressure_residual = GetNonCstVectorStaticFollowingPressureResidual();
const double time = parent::GetTimeManager().GetTime();
auto& vector_surfacic_force_face1 = GetNonCstVectorSurfacicForceFace1();
......@@ -498,19 +432,6 @@ namespace MoReFEM
auto& vector_surfacic_force_face6 = GetNonCstVectorSurfacicForceFace6();
vector_surfacic_force_face6.ZeroEntries(__FILE__, __LINE__);
matrix_tangent_static_following_pressure.ZeroEntries(__FILE__, __LINE__);
vector_static_following_pressure_residual.ZeroEntries(__FILE__, __LINE__);
GlobalMatrixWithCoefficient mat(matrix_tangent_static_following_pressure, 1.);
GlobalVectorWithCoefficient vec(vector_static_following_pressure_residual, 1.);
const GlobalVector& displacement_vector = GetVectorDisplacementAtNewtonIteration();
GetStaticFollowingPressureOperator().Assemble(std::make_tuple(std::ref(mat), std::ref(vec)),
displacement_vector);
GlobalVectorWithCoefficient vec_face1(vector_surfacic_force_face1, 1.);
GlobalVectorWithCoefficient vec_face2(vector_surfacic_force_face2, 1.);
GlobalVectorWithCoefficient vec_face3(vector_surfacic_force_face3, 1.);
......@@ -579,11 +500,6 @@ namespace MoReFEM
rhs,
__FILE__, __LINE__);
Wrappers::Petsc::AXPY(1.,
GetVectorStaticFollowingPressureResidual(),
rhs,
__FILE__, __LINE__);
Wrappers::Petsc::AXPY(-1.,
GetVectorSurfacicForceFace1(),
rhs,
......@@ -618,10 +534,6 @@ namespace MoReFEM
ApplyEssentialBoundaryCondition<VariationalFormulationNS::On::system_rhs>(displacement_numbering_subset,
displacement_numbering_subset);
// std::string rhs_file = parent::GetResultDirectory() + "/rhs.m";
// rhs.View(GetMpi(), __FILE__, __LINE__);
TangentCheck(rhs);
}
......@@ -663,109 +575,6 @@ namespace MoReFEM
displacement_numbering_subset);
}
void VariationalFormulation::TangentCheck(GlobalVector& rhs)
{
// Verifying if the tangent is quadratic.
const double rhs_norm_iter = rhs.Norm(NORM_2, __FILE__, __LINE__);
unsigned int iteration = GetSnes().GetSnesIteration(__FILE__, __LINE__);
if (iteration == 0)
{
rhs_norm_previous_iter_ = 0;
}
if (!(iteration == 0))
{
if (rhs_norm_iter > rhs_norm_previous_iter_*rhs_norm_previous_iter_)
{
tangent_not_quadratic_in_static_ = true;
if (iteration > 1)
tangent_not_quadratic_at_other_than_first_iteration_in_static_ = true;
if (GetMpi().IsRootProcessor())
{
if (FilesystemNS::File::DoExist(GetTangentQuadraticVerificationFile()))
{
std::ofstream inout;
FilesystemNS::File::Append(inout, GetTangentQuadraticVerificationFile(), __FILE__, __LINE__);
inout << GetTimeManager().GetTime();
inout << " | ";
inout << std::setw(stew_iteration_size_) << iteration;
inout << std::scientific << std::setprecision(12) << " | " << rhs_norm_iter;
inout << " | " << rhs_norm_previous_iter_*rhs_norm_previous_iter_;
inout << std::endl;
}
}
GetMpi().Barrier();
if (print_tangent_warning_)
{
Wrappers::Petsc::PrintMessageOnFirstProcessor("\n===========================================\n",
GetMpi(),
__FILE__, __LINE__);
Wrappers::Petsc::PrintMessageOnFirstProcessor("[WARNING] Tangent is not quadratic at iteration %d.\n",
GetMpi(),
__FILE__, __LINE__,
iteration);
Wrappers::Petsc::PrintMessageOnFirstProcessor("Residual norm at current iteration %1.12e\n",
GetMpi(),
__FILE__, __LINE__,
rhs_norm_iter);
Wrappers::Petsc::PrintMessageOnFirstProcessor("Previous residual norm square %1.12e\n",
GetMpi(),
__FILE__, __LINE__,
rhs_norm_previous_iter_*rhs_norm_previous_iter_);
Wrappers::Petsc::PrintMessageOnFirstProcessor("===========================================\n\n",
GetMpi(),
__FILE__, __LINE__);
}
}
}
rhs_norm_previous_iter_ = rhs_norm_iter;
}
void VariationalFormulation::WasTangentQuadratic()
{
if (tangent_not_quadratic_in_static_)
{
Wrappers::Petsc::PrintMessageOnFirstProcessor("\n===========================================\n",
GetMpi(),
__FILE__, __LINE__);
Wrappers::Petsc::PrintMessageOnFirstProcessor("[WARNING] In the static resolution the tangent was not quadratic.\n",
GetMpi(),
__FILE__, __LINE__);
if (tangent_not_quadratic_at_other_than_first_iteration_in_static_)
{
Wrappers::Petsc::PrintMessageOnFirstProcessor("[WARNING] The tangent was not quadratic at another step than the first one.\n",
GetMpi(),
__FILE__, __LINE__);
}
Wrappers::Petsc::PrintMessageOnFirstProcessor("===========================================\n",
GetMpi(),
__FILE__, __LINE__);
}
if (tangent_not_quadratic_in_static_)
{
Wrappers::Petsc::PrintMessageOnFirstProcessor("\n===========================================\n",
GetMpi(),
__FILE__, __LINE__);
Wrappers::Petsc::PrintMessageOnFirstProcessor("[WARNING] Informations about the tangent have been printed in %s\n",
GetMpi(),
__FILE__, __LINE__,
GetTangentQuadraticVerificationFile().c_str());
Wrappers::Petsc::PrintMessageOnFirstProcessor("===========================================\n\n",
GetMpi(),
__FILE__, __LINE__);
}
}
PetscErrorCode VariationalFormulation::Jacobian(SNES snes,
Vec evaluation_state,
......@@ -814,19 +623,10 @@ namespace MoReFEM
Wrappers::Petsc::AXPY<NonZeroPattern::same>(1.,
GetMatrixTangentStiffness(),
system_matrix, __FILE__, __LINE__);
Wrappers::Petsc::AXPY<NonZeroPattern::same>(1.,
GetMatrixTangentStaticFollowingPressure(),
system_matrix,
__FILE__, __LINE__);
// system_matrix.View(GetMpi(), __FILE__, __LINE__);
ApplyEssentialBoundaryCondition<VariationalFormulationNS::On::system_matrix>(displacement_numbering_subset,
displacement_numbering_subset);
// std::string matrix_file = parent::GetResultDirectory() + "/tangent.m";
// system_matrix.View(GetMpi(), __FILE__, __LINE__);
}
......@@ -874,11 +674,6 @@ namespace MoReFEM
const auto& displacement = variational_formulation.GetVectorDisplacementAtNewtonIteration();
const auto& velocity = variational_formulation.GetVectorVelocityAtNewtonIteration();
// std::string displacement_file = parent::GetResultDirectory() + "/displacement.txt";
// displacement.Print<MpiScale::processor_wise>(GetMpi(), displacement_file, __FILE__, __LINE__)
//
// displacement.View(variational_formulation.GetMpi(), __FILE__, __LINE__);
const PetscReal displacement_min = displacement.Min(__FILE__, __LINE__).second;
const PetscReal displacement_max = displacement.Max(__FILE__, __LINE__).second;
......
......@@ -24,13 +24,11 @@
# include "OperatorInstances/VariationalOperator/BilinearForm/Mass.hpp"
# include "OperatorInstances/VariationalOperator/LinearForm/TransientSource.hpp"
# include "OperatorInstances/VariationalOperator/NonlinearForm/FollowingPressure.hpp"
# include "OperatorInstances/VariationalOperator/NonlinearForm/SecondPiolaKirchhoffStressTensor.hpp"
# include "OperatorInstances/HyperelasticLaws/CiarletGeymonat.hpp"
# include "OperatorInstances/VariationalOperator/NonlinearForm/SecondPiolaKirchhoffStressTensor/ViscoelasticityPolicy/None.hpp"
# include "OperatorInstances/VariationalOperator/NonlinearForm/SecondPiolaKirchhoffStressTensor/InternalVariablePolicy/Microsphere.hpp"
# include "OperatorInstances/VariationalOperator/NonlinearForm/SecondPiolaKirchhoffStressTensor/ViscoelasticityPolicy/None.hpp"
# include "OperatorInstances/VariationalOperator/NonlinearForm/Local/SecondPiolaKirchhoffStressTensor/Internal/Helper.hpp"
......@@ -272,7 +270,7 @@ namespace MoReFEM
* \brief Update the content of all the vectors and matrices relevant to the computation of the tangent
* and the residual.
*
* \param[in] petsc_vec_displacement_at_newton_iteration PETSc vector.
* \param[in] petsc_vec_displacement_at_newton_iteration PETSc vector.
*/
void UpdateVectorsAndMatrices(const Vec& petsc_vec_displacement_at_newton_iteration);
......@@ -323,14 +321,6 @@ namespace MoReFEM
//! Compute the guess for next time step with the new velocity.
void ComputeGuessForNextTimeStep();
//! Check if the tangent is quadratic at each newton iteration.
//! \param[in] rhs Right-hand side vector.
void TangentCheck(GlobalVector& rhs);
public:
//! Indicates at the end of the simulation if the tangent was quadratic.
void WasTangentQuadratic();
private:
/*!
......@@ -375,9 +365,6 @@ namespace MoReFEM
const GlobalVariationalOperatorNS::TransientSource<ParameterNS::Type::vector>&
GetSurfacicForceOperatorFace6() const noexcept;
//! Get the static following pressure operator.
const GlobalVariationalOperatorNS::FollowingPressure<ParameterNS::TimeDependencyNS::None>& GetStaticFollowingPressureOperator() const noexcept;
private:
......@@ -408,9 +395,6 @@ namespace MoReFEM
//! Surfacic source operator on face6.
GlobalVariationalOperatorNS::TransientSource<ParameterNS::Type::vector>::const_unique_ptr surfacic_force_operator_face_6_ = nullptr;
// Static Following pressure operator.
GlobalVariationalOperatorNS::FollowingPressure<ParameterNS::TimeDependencyNS::None>::const_unique_ptr static_following_pressure_operator_ = nullptr;
///@}
private:
......@@ -478,18 +462,6 @@ namespace MoReFEM
GlobalVector& GetNonCstVectorDiffDisplacement() noexcept;
const GlobalMatrix& GetMatrixTangentStaticFollowingPressure() const noexcept;
GlobalMatrix& GetNonCstMatrixTangentStaticFollowingPressure() noexcept;
const GlobalVector& GetVectorStaticFollowingPressureResidual() const noexcept;
GlobalVector& GetNonCstVectorStaticFollowingPressureResidual() noexcept;
//! Applied pressure.
const ScalarParameter<>& GetStaticPressure() const noexcept;
///@}
//! Access to the solid.
......@@ -580,13 +552,7 @@ namespace MoReFEM
//! Midpoint velocity.
GlobalVector::unique_ptr vector_midpoint_velocity_ = nullptr;
//! Matrix tangent static following pressure.
GlobalMatrix::unique_ptr matrix_tangent_static_following_pressure_ = nullptr;
//! Static Following pressure residual vector.
GlobalVector::unique_ptr vector_static_following_pressure_residual_ = nullptr;
///@}
private:
......@@ -631,37 +597,8 @@ namespace MoReFEM
//! Force parameter for the static force on face6.
force_parameter_type::unique_ptr force_parameter_face_6_ = nullptr;
//! Static pressure.
ScalarParameter<>::unique_ptr static_pressure_ = nullptr;
private:
//! Needed to verify if tangent is quadratic.
double rhs_norm_previous_iter_;
//! Path to the directory that stores the energy file.
std::string tangent_quadratic_verification_file_;
//! Maximum string size of the time.
int stew_time_size_;
//! Maximum string size of the iterations.
int stew_iteration_size_;
//! Indicates if the tangent was quadratic over the static resolution.
bool tangent_not_quadratic_in_static_ = false;
//! Indicates if the tangent was not quadratic at another iteration than the first in the static resolution.
bool tangent_not_quadratic_at_other_than_first_iteration_in_static_ = false;
//! Enables to print in the console the warnings at each iterations.
bool print_tangent_warning_ = false;
private:
//! Constant accessor to the file in which the tangent quadratic verification is printed.
const std::string& GetTangentQuadraticVerificationFile() const noexcept;
};
......
......@@ -333,47 +333,6 @@ namespace MoReFEM
return displacement_numbering_subset_;
}
inline const GlobalVariationalOperatorNS::FollowingPressure<ParameterNS::TimeDependencyNS::None>&
VariationalFormulation::GetStaticFollowingPressureOperator() const noexcept
{
assert(!(!static_following_pressure_operator_));
return *static_following_pressure_operator_;
}
inline const GlobalVector& VariationalFormulation::GetVectorStaticFollowingPressureResidual() const noexcept
{
assert(!(!vector_static_following_pressure_residual_));
return *vector_static_following_pressure_residual_;
}
inline GlobalVector& VariationalFormulation::GetNonCstVectorStaticFollowingPressureResidual() noexcept
{
return const_cast<GlobalVector&>(GetVectorStaticFollowingPressureResidual());
}
inline const GlobalMatrix& VariationalFormulation::GetMatrixTangentStaticFollowingPressure() const noexcept
{
assert(!(!matrix_tangent_static_following_pressure_));
return *matrix_tangent_static_following_pressure_;
}
inline GlobalMatrix& VariationalFormulation::GetNonCstMatrixTangentStaticFollowingPressure() noexcept
{
return const_cast<GlobalMatrix&>(GetMatrixTangentStaticFollowingPressure());
}
inline const ScalarParameter<>& VariationalFormulation::GetStaticPressure() const noexcept
{
assert(!(!static_pressure_));
return *static_pressure_;
}
inline const std::string& VariationalFormulation::GetTangentQuadraticVerificationFile() const noexcept
{
return tangent_quadratic_verification_file_;
}
} // namespace TestNS::Microsphere
......
......@@ -315,6 +315,7 @@ Domain7 = {
} -- Domain7
Domain8 = {
-- Index of the geometric mesh upon which the domain is defined (as defined in the present file). Might be
......@@ -326,12 +327,12 @@ Domain8 = {
-- dimensions.
-- Expected format: {VALUE1, VALUE2, ...}
-- Constraint: value_in(v, {0, 1, 2, 3})
dimension_list = { 2 },
dimension_list = { },
-- List of mesh labels encompassed by the domain. Might be left empty if no restriction at all upon mesh
-- labels. This parameter does not make sense if no mesh is defined for the domain.
-- Expected format: {VALUE1, VALUE2, ...}
mesh_label_list = { 4, 5, 6 },
mesh_label_list = { },
-- List of geometric element types considered in the domain. Might be left empty if no restriction upon
-- these. No constraint is applied at LuaOptionFile level, as some geometric element types could be added after
......@@ -361,7 +362,7 @@ Domain9 = {
-- dimensions.
-- Expected format: {VALUE1, VALUE2, ...}
-- Constraint: value_in(v, {0, 1, 2, 3})
dimension_list = { },
dimension_list = { 2 },
-- List of mesh labels encompassed by the domain. Might be left empty if no restriction at all upon mesh
-- labels. This parameter does not make sense if no mesh is defined for the domain.
......@@ -384,7 +385,6 @@ Domain9 = {
} -- Domain9
Domain10 = {
-- Index of the geometric mesh upon which the domain is defined (as defined in the present file). Might be
......@@ -396,12 +396,12 @@ Domain10 = {
-- dimensions.
-- Expected format: {VALUE1, VALUE2, ...}
-- Constraint: value_in(v, {0, 1, 2, 3})
dimension_list = { 2 },
dimension_list = { 1 },
-- List of mesh labels encompassed by the domain. Might be left empty if no restriction at all upon mesh
-- labels. This parameter does not make sense if no mesh is defined for the domain.
-- Expected format: {VALUE1, VALUE2, ...}
mesh_label_list = { },
mesh_label_list = { 233 },
-- List of geometric element types considered in the domain. Might be left empty if no restriction upon
-- these. No constraint is applied at LuaOptionFile level, as some geometric element types could be added after
......@@ -435,7 +435,7 @@ Domain11 = {
-- List of mesh labels encompassed by the domain. Might be left empty if no restriction at all upon mesh
-- labels. This parameter does not make sense if no mesh is defined for the domain.
-- Expected format: {VALUE1, VALUE2, ...}
mesh_label_list = { 233 },
mesh_label_list = { 201 },
-- List of geometric element types considered in the domain. Might be left empty if no restriction upon
-- these. No constraint is applied at LuaOptionFile level, as some geometric element types could be added after
......@@ -466,40 +466,6 @@ Domain12 = {
-- Constraint: value_in(v, {0, 1, 2, 3})
dimension_list = { 1 },
-- List of mesh labels encompassed by the domain. Might be left empty if no restriction at all upon mesh
-- labels. This parameter does not make sense if no mesh is defined for the domain.
-- Expected format: {VALUE1, VALUE2, ...}
mesh_label_list = { 201 },
-- List of geometric element types considered in the domain. Might be left empty if no restriction upon
-- these. No constraint is applied at LuaOptionFile level, as some geometric element types could be added after
-- generation of current input data file. Current list is below; if an incorrect value is put there it
-- will be detected a bit later when the domain object is built.
-- The known types when this file was generated are:
-- . Point1
-- . Segment2, Segment3
-- . Triangle3, Triangle6
-- . Quadrangle4, Quadrangle8, Quadrangle9
-- . Tetrahedron4, Tetrahedron10
-- . Hexahedron8, Hexahedron20, Hexahedron27.
-- Expected format: {"VALUE1", "VALUE2", ...}
geometric_element_type_list = { }
} -- Domain12
Domain13 = {
-- Index of the geometric mesh upon which the domain is defined (as defined in the present file). Might be