Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
MoReFEM
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
47
Issues
47
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MoReFEM
CoreLibrary
MoReFEM
Commits
f008a9eb
Commit
f008a9eb
authored
Jun 16, 2020
by
GILLES Sebastien
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#1443
Introduce the run from prepartition data for the Stokes model.
parent
81e5bd5c
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
655 additions
and
14 deletions
+655
-14
MoReFEM.xcodeproj/project.pbxproj
MoReFEM.xcodeproj/project.pbxproj
+2
-0
Sources/ModelInstances/Stokes/CMakeLists.txt
Sources/ModelInstances/Stokes/CMakeLists.txt
+30
-4
Sources/ModelInstances/Stokes/InputData.hpp
Sources/ModelInstances/Stokes/InputData.hpp
+2
-0
Sources/ModelInstances/Stokes/TwoOperators.cmake
Sources/ModelInstances/Stokes/TwoOperators.cmake
+29
-4
Sources/ModelInstances/Stokes/demo.lua
Sources/ModelInstances/Stokes/demo.lua
+23
-0
Sources/ModelInstances/Stokes/demo_from_prepartitioned_data.lua
...s/ModelInstances/Stokes/demo_from_prepartitioned_data.lua
+550
-0
Sources/ModelInstances/Stokes/test_results.cpp
Sources/ModelInstances/Stokes/test_results.cpp
+19
-6
No files found.
MoReFEM.xcodeproj/project.pbxproj
View file @
f008a9eb
...
...
@@ -3752,6 +3752,7 @@
BE5275252499002700507228 /* demo_2d_binary_from_prepartitioned_data.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = demo_2d_binary_from_prepartitioned_data.lua; sourceTree = "<group>"; };
BE5275262499002700507228 /* demo_3d_from_prepartitioned_data.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = demo_3d_from_prepartitioned_data.lua; sourceTree = "<group>"; };
BE5275272499002800507228 /* demo_2d_from_prepartitioned_data.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = demo_2d_from_prepartitioned_data.lua; sourceTree = "<group>"; };
BE5275282499052300507228 /* demo_from_prepartitioned_data.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = demo_from_prepartitioned_data.lua; sourceTree = "<group>"; };
BE5301441E774418004CA0BA /* ApplySetCauchyGreenTensor.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ApplySetCauchyGreenTensor.hpp; path = Internal/ApplySetCauchyGreenTensor.hpp; sourceTree = "<group>"; };
BE5301451E774418004CA0BA /* ApplySetCauchyGreenTensor.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ApplySetCauchyGreenTensor.hxx; path = Internal/ApplySetCauchyGreenTensor.hxx; sourceTree = "<group>"; };
BE5389FB1C897FE400D80749 /* Mpi.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Mpi.hpp; sourceTree = "<group>"; };
...
...
@@ -8155,6 +8156,7 @@
BE0AFB702074C28E0089FD9D /* CMakeLists.txt */,
BEBB9F02227867FB00660051 /* TwoOperators.cmake */,
BE5704E122786DD000F83152 /* demo.lua */,
BE5275282499052300507228 /* demo_from_prepartitioned_data.lua */,
BEB0C6151EC2FDD100D62905 /* README */,
BE5ECE2919AC85EA00C636A7 /* InputData.hpp */,
BE915A151AAF514900B4C474 /* main.cpp */,
Sources/ModelInstances/Stokes/CMakeLists.txt
View file @
f008a9eb
...
...
@@ -36,9 +36,11 @@ add_test(Stokes
--overwrite_directory
-e MOREFEM_ROOT=
${
MOREFEM_ROOT
}
-i
${
MOREFEM_ROOT
}
/Sources/ModelInstances/Stokes/demo.lua
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/Seq
)
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/Seq
-e MOREFEM_PREPARTITIONED_DATA_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/PrepartitionedData
)
set_tests_properties
(
Stokes PROPERTIES TIMEOUT 80
)
add_test
(
Stokes-mpi
${
OPEN_MPI_INCL_DIR
}
/../bin/mpirun
--oversubscribe
...
...
@@ -46,15 +48,29 @@ add_test(Stokes-mpi
--overwrite_directory
-e MOREFEM_ROOT=
${
MOREFEM_ROOT
}
-i
${
MOREFEM_ROOT
}
/Sources/ModelInstances/Stokes/demo.lua
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/Mpi4
)
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/Mpi4
-e MOREFEM_PREPARTITIONED_DATA_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/PrepartitionedData
)
set_tests_properties
(
Stokes-mpi PROPERTIES TIMEOUT 80
)
add_test
(
Stokes-mpi-from-prepartitioned-data
${
OPEN_MPI_INCL_DIR
}
/../bin/mpirun
--oversubscribe
-np 4 MoReFEM4Stokes
--overwrite_directory
-e MOREFEM_ROOT=
${
MOREFEM_ROOT
}
-i
${
MOREFEM_ROOT
}
/Sources/ModelInstances/Stokes/demo_from_prepartitioned_data.lua
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/Mpi4_FromPrepartitionedData
-e MOREFEM_PREPARTITIONED_DATA_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/PrepartitionedData
)
set_tests_properties
(
Stokes-mpi-from-prepartitioned-data PROPERTIES TIMEOUT 80
)
add_test
(
StokesModelEnsightOutput
MoReFEM4StokesEnsightOutput
-e MOREFEM_ROOT=
${
MOREFEM_ROOT
}
-i
${
MOREFEM_TEST_OUTPUT_DIR
}
/Seq/Stokes/Rank_0/input_data.lua
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/Seq
)
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/Seq
-e MOREFEM_PREPARTITIONED_DATA_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/PrepartitionedData
)
set_tests_properties
(
StokesModelEnsightOutput PROPERTIES TIMEOUT 20
)
...
...
@@ -62,7 +78,17 @@ add_test(StokesModelEnsightOutput-mpi
MoReFEM4StokesEnsightOutput
-e MOREFEM_ROOT=
${
MOREFEM_ROOT
}
-i
${
MOREFEM_TEST_OUTPUT_DIR
}
/Mpi4/Stokes/Rank_0/input_data.lua
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/Mpi4
)
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/Mpi4
-e MOREFEM_PREPARTITIONED_DATA_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/PrepartitionedData
)
set_tests_properties
(
StokesModelEnsightOutput-mpi PROPERTIES TIMEOUT 20
)
add_test
(
StokesModelEnsightOutput-mpi-from-prepartitioned-data
MoReFEM4StokesEnsightOutput
-e MOREFEM_ROOT=
${
MOREFEM_ROOT
}
-i
${
MOREFEM_TEST_OUTPUT_DIR
}
/Mpi4_FromPrepartitionedData/Stokes/Rank_0/input_data.lua
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/Mpi4_FromPrepartitionedData
-e MOREFEM_PREPARTITIONED_DATA_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/PrepartitionedData
)
set_tests_properties
(
StokesModelEnsightOutput-mpi PROPERTIES TIMEOUT 20
)
...
...
Sources/ModelInstances/Stokes/InputData.hpp
View file @
f008a9eb
...
...
@@ -24,6 +24,7 @@
# include "Core/InputData/Instances/TimeManager/TimeManager.hpp"
# include "Core/InputData/Instances/Geometry/Mesh.hpp"
# include "Core/InputData/Instances/Solver/Petsc.hpp"
# include "Core/InputData/Instances/Parallelism/Parallelism.hpp"
# include "FormulationSolver/Crtp/VolumicAndSurfacicSource.hpp"
...
...
@@ -131,6 +132,7 @@ namespace MoReFEM
InputDataNS
::
VectorialTransientSource
<
EnumUnderlyingType
(
SourceIndex
::
volumic
)
>
,
InputDataNS
::
VectorialTransientSource
<
EnumUnderlyingType
(
SourceIndex
::
surfacic
)
>
,
InputDataNS
::
Parallelism
,
InputDataNS
::
Result
>
;
...
...
Sources/ModelInstances/Stokes/TwoOperators.cmake
View file @
f008a9eb
...
...
@@ -41,7 +41,8 @@ add_test(Stokes_2_operators
--overwrite_directory
-e MOREFEM_ROOT=
${
MOREFEM_ROOT
}
-i
${
MOREFEM_ROOT
}
/Sources/ModelInstances/Stokes/demo.lua
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Seq
)
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Seq
-e MOREFEM_PREPARTITIONED_DATA_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/PrepartitionedData
)
set_tests_properties
(
Stokes_2_operators PROPERTIES TIMEOUT 80
)
...
...
@@ -52,15 +53,29 @@ add_test(Stokes_2_operators-mpi
--overwrite_directory
-e MOREFEM_ROOT=
${
MOREFEM_ROOT
}
-i
${
MOREFEM_ROOT
}
/Sources/ModelInstances/Stokes/demo.lua
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Mpi4
)
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Mpi4
-e MOREFEM_PREPARTITIONED_DATA_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/PrepartitionedData
)
set_tests_properties
(
Stokes_2_operators-mpi PROPERTIES TIMEOUT 80
)
add_test
(
Stokes_2_operators-mpi-from-prepartitioned-data
${
OPEN_MPI_INCL_DIR
}
/../bin/mpirun
--oversubscribe
-np 4 MoReFEM4Stokes
--overwrite_directory
-e MOREFEM_ROOT=
${
MOREFEM_ROOT
}
-i
${
MOREFEM_ROOT
}
/Sources/ModelInstances/Stokes/demo_from_prepartitioned_data.lua
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Mpi4_FromPrepartitionedData
-e MOREFEM_PREPARTITIONED_DATA_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/PrepartitionedData
)
set_tests_properties
(
Stokes-mpi-from-prepartitioned-data PROPERTIES TIMEOUT 80
)
add_test
(
Stokes_2_operatorsModelEnsightOutput
MoReFEM4Stokes_2_operatorsEnsightOutput
-e MOREFEM_ROOT=
${
MOREFEM_ROOT
}
-i
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Seq/Stokes/Rank_0/input_data.lua
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Seq
)
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Seq
-e MOREFEM_PREPARTITIONED_DATA_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/PrepartitionedData
)
set_tests_properties
(
Stokes_2_operatorsModelEnsightOutput PROPERTIES TIMEOUT 80
)
...
...
@@ -68,10 +83,20 @@ add_test(Stokes_2_operatorsModelEnsightOutput-mpi
MoReFEM4Stokes_2_operatorsEnsightOutput
-e MOREFEM_ROOT=
${
MOREFEM_ROOT
}
-i
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Mpi4/Stokes/Rank_0/input_data.lua
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Mpi4
)
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Mpi4
-e MOREFEM_PREPARTITIONED_DATA_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/PrepartitionedData
)
set_tests_properties
(
Stokes_2_operatorsModelEnsightOutput-mpi PROPERTIES TIMEOUT 80
)
add_test
(
Stokes_2_operatorsModelEnsightOutput-mpi-from-prepartitioned-data
MoReFEM4StokesEnsightOutput
-e MOREFEM_ROOT=
${
MOREFEM_ROOT
}
-i
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Mpi4_FromPrepartitionedData/Stokes/Rank_0/input_data.lua
-e MOREFEM_RESULT_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/TwoOperators/Mpi4_FromPrepartitionedData
-e MOREFEM_PREPARTITIONED_DATA_DIR=
${
MOREFEM_TEST_OUTPUT_DIR
}
/PrepartitionedData
)
set_tests_properties
(
Stokes_2_operatorsModelEnsightOutput-mpi-from-prepartitioned-data PROPERTIES TIMEOUT 80
)
# Not a typo: the Stokes executable with a different MOREFEM_TEST_OUTPUT_DIR is fine!
add_test
(
Stokes_2_operatorsCheckResults
...
...
Sources/ModelInstances/Stokes/demo.lua
View file @
f008a9eb
...
...
@@ -500,6 +500,29 @@ TransientSource2 = {
}
-- TransientSource2
Parallelism
=
{
-- What should be done for a parallel run. There are 4 possibilities:
-- 'Precompute': Precompute the data for a later parallel run and stop once it's done.
-- 'ParallelNoWrite': Run the code in parallel without using any pre-processed data and do not write down
-- the processed data.
-- 'Parallel': Run the code in parallel without using any pre-processed data and write down the processed
-- data.
-- 'RunFromPreprocessed': Run the code in parallel using pre-processed data.
-- Expected format: "VALUE"
-- Constraint: value_in(v, {'Precompute', 'ParallelNoWrite', 'Parallel', 'RunFromPreprocessed'})
policy
=
'Parallel'
,
-- Directory in which parallelism data will be written or read (depending on the policy).
-- Expected format: "VALUE"
directory
=
'${MOREFEM_PREPARTITIONED_DATA_DIR}/Stokes'
}
-- Parallelism
Result
=
{
...
...
Sources/ModelInstances/Stokes/demo_from_prepartitioned_data.lua
0 → 100644
View file @
f008a9eb
-- Comment lines are introduced by "--".
-- In a section (i.e. within braces), all entries must be separated by a comma.
transient
=
{
-- Time at the beginning of the code (in seconds).
-- Expected format: VALUE
-- Constraint: v >= 0.
init_time
=
0
,
-- Time step between two iterations, in seconds.
-- Expected format: VALUE
-- Constraint: v > 0.
timeStep
=
0
.
1
,
-- Maximum time, if set to zero run a static case.
-- Expected format: VALUE
-- Constraint: v >= 0.
timeMax
=
0
}
-- transient
NumberingSubset1
=
{
-- Name of the numbering subset (not really used; at the moment I just need one input parameter to ground
-- the possible values to choose elsewhere).
-- Expected format: "VALUE"
name
=
'monolithic'
,
-- Whether a vector defined on this numbering subset might be used to compute a movemesh. If true, a
-- FEltSpace featuring this numbering subset will compute additional quantities to enable fast computation.
-- This should be false for most numbering subsets, and when it's true the sole unknown involved should be a
-- displacement.
-- Expected format: 'true' or 'false' (without the quote)
do_move_mesh
=
false
}
-- NumberingSubset1
NumberingSubset2
=
{
-- Name of the numbering subset (not really used; at the moment I just need one input parameter to ground
-- the possible values to choose elsewhere).
-- Expected format: "VALUE"
name
=
'test1'
,
-- Whether a vector defined on this numbering subset might be used to compute a movemesh. If true, a
-- FEltSpace featuring this numbering subset will compute additional quantities to enable fast computation.
-- This should be false for most numbering subsets, and when it's true the sole unknown involved should be a
-- displacement.
-- Expected format: 'true' or 'false' (without the quote)
do_move_mesh
=
false
}
-- NumberingSubset2
Unknown1
=
{
-- Name of the unknown (used for displays in output).
-- Expected format: "VALUE"
name
=
'velocity'
,
-- Index of the god of dof into which the finite element space is defined.
-- Expected format: "VALUE"
-- Constraint: value_in(v, {'scalar', 'vectorial'})
nature
=
'vectorial'
}
-- Unknown1
Unknown2
=
{
-- Name of the unknown (used for displays in output).
-- Expected format: "VALUE"
name
=
'pressure'
,
-- Index of the god of dof into which the finite element space is defined.
-- Expected format: "VALUE"
-- Constraint: value_in(v, {'scalar', 'vectorial'})
nature
=
'scalar'
}
-- Unknown2
EssentialBoundaryCondition1
=
{
-- Name of the boundary condition (must be unique).
-- Expected format: "VALUE"
name
=
'sole'
,
-- Comp1, Comp2 or Comp3
-- Expected format: "VALUE"
-- Constraint: value_in(v, {'Comp1', 'Comp2', 'Comp3', 'Comp12', 'Comp23', 'Comp13', 'Comp123'})
component
=
'Comp123'
,
-- Name of the unknown addressed by the boundary condition.
-- Expected format: "VALUE"
unknown
=
'velocity'
,
-- Values at each of the relevant component.
-- Expected format: { VALUE1, VALUE2, ...}
value
=
{
0
,
0
,
0
},
-- Index of the domain onto which essential boundary condition is defined.
-- Expected format: VALUE
domain_index
=
3
,
-- Whether the values of the boundary condition may vary over time.
-- Expected format: 'true' or 'false' (without the quote)
is_mutable
=
false
,
-- Whether a dof of this boundary condition may also belong to another one. This highlights an ill-defined
-- model in most cases, but I nonetheless need it for FSI/ALE.
-- Expected format: 'true' or 'false' (without the quote)
may_overlap
=
false
}
-- EssentialBoundaryCondition1
Mesh1
=
{
-- Path of the mesh file to use.
-- Expected format: "VALUE"
mesh
=
'${MOREFEM_ROOT}/Data/Mesh/cylindrical_3d.mesh'
,
-- Format of the input mesh.
-- Expected format: "VALUE"
-- Constraint: value_in(v, {'Ensight', 'Medit'})
format
=
'Medit'
,
-- Highest dimension of the input mesh. This dimension might be lower than the one effectively read in the
-- mesh file; in which case Coords will be reduced provided all the dropped values are 0. If not, an
-- exception is thrown.
-- Expected format: VALUE
-- Constraint: v <= 3 and v > 0
dimension
=
3
,
-- Space unit of the mesh.
-- Expected format: VALUE
space_unit
=
1
}
-- Mesh1
Domain1
=
{
-- Index of the geometric mesh upon which the domain is defined (as defined in the present file). Might be
-- left empty if domain not limited to one mesh; at most one value is expected here.
-- Expected format: { VALUE1, VALUE2, ...}
mesh_index
=
{
1
},
-- List of dimensions encompassed by the domain. Might be left empty if no restriction at all upon
-- dimensions.
-- Expected format: { VALUE1, VALUE2, ...}
-- Constraint: value_in(v, {0, 1, 2, 3})
dimension_list
=
{
3
},
-- 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
=
{},
-- 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
=
{}
}
-- Domain1
Domain2
=
{
-- Index of the geometric mesh upon which the domain is defined (as defined in the present file). Might be
-- left empty if domain not limited to one mesh; at most one value is expected here.
-- Expected format: { VALUE1, VALUE2, ...}
mesh_index
=
{
1
},
-- List of dimensions encompassed by the domain. Might be left empty if no restriction at all upon
-- dimensions.
-- Expected format: { VALUE1, VALUE2, ...}
-- Constraint: value_in(v, {0, 1, 2, 3})
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.
-- Expected format: { VALUE1, VALUE2, ...}
mesh_label_list
=
{
1
},
-- 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
=
{}
}
-- Domain2
Domain3
=
{
-- Index of the geometric mesh upon which the domain is defined (as defined in the present file). Might be
-- left empty if domain not limited to one mesh; at most one value is expected here.
-- Expected format: { VALUE1, VALUE2, ...}
mesh_index
=
{
1
},
-- List of dimensions encompassed by the domain. Might be left empty if no restriction at all upon
-- dimensions.
-- Expected format: { VALUE1, VALUE2, ...}
-- Constraint: value_in(v, {0, 1, 2, 3})
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
=
{
3
},
-- 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
=
{}
}
-- Domain3
Domain4
=
{
-- Index of the geometric mesh upon which the domain is defined (as defined in the present file). Might be
-- left empty if domain not limited to one mesh; at most one value is expected here.
-- Expected format: { VALUE1, VALUE2, ...}
mesh_index
=
{
1
},
-- List of dimensions encompassed by the domain. Might be left empty if no restriction at all upon
-- dimensions.
-- Expected format: { VALUE1, VALUE2, ...}
-- Constraint: value_in(v, {0, 1, 2, 3})
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
=
{},
-- 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
=
{}
}
-- Domain4
FiniteElementSpace1
=
{
-- Index of the god of dof into which the finite element space is defined.
-- Expected format: VALUE
god_of_dof_index
=
1
,
-- Index of the domain onto which the finite element space is defined. This domain must be unidimensional.
-- Expected format: VALUE
domain_index
=
1
,
-- List of all unknowns defined in the finite element space. Unknowns here must be defined in this file as
-- an 'Unknown' block; expected name/identifier is the name given there.
-- Expected format: {"VALUE1", "VALUE2", ...}
unknown_list
=
{
'velocity'
,
'pressure'
},
-- List of the shape function to use for each unknown;
-- Expected format: {"VALUE1", "VALUE2", ...}
shape_function_list
=
{
'P2'
,
'P1'
},
-- List of the numbering subset to use for each unknown;
-- Expected format: { VALUE1, VALUE2, ...}
numbering_subset_list
=
{
1
,
1
}
}
-- FiniteElementSpace1
FiniteElementSpace2
=
{
-- Index of the god of dof into which the finite element space is defined.
-- Expected format: VALUE
god_of_dof_index
=
1
,
-- Index of the domain onto which the finite element space is defined. This domain must be unidimensional.
-- Expected format: VALUE
domain_index
=
2
,
-- List of all unknowns defined in the finite element space. Unknowns here must be defined in this file as
-- an 'Unknown' block; expected name/identifier is the name given there.
-- Expected format: {"VALUE1", "VALUE2", ...}
unknown_list
=
{
'velocity'
},
-- List of the shape function to use for each unknown;
-- Expected format: {"VALUE1", "VALUE2", ...}
shape_function_list
=
{
'P2'
},
-- List of the numbering subset to use for each unknown;
-- Expected format: { VALUE1, VALUE2, ...}
numbering_subset_list
=
{
1
}
}
-- FiniteElementSpace2
Petsc1
=
{
-- Absolute tolerance
-- Expected format: VALUE
-- Constraint: v > 0.
absoluteTolerance
=
1e-10
,
-- gmresStart
-- Expected format: VALUE
-- Constraint: v >= 0
gmresRestart
=
200
,
-- Maximum iteration
-- Expected format: VALUE
-- Constraint: v > 0
maxIteration
=
1000
,
-- Preconditioner to use. Must be lu for any direct solver.
-- Expected format: "VALUE"
-- Constraint: value_in(v, {'lu', 'none'})
preconditioner
=
'lu'
,
-- Relative tolerance
-- Expected format: VALUE
-- Constraint: v > 0.
relativeTolerance
=
1e-06
,
-- Step size tolerance
-- Expected format: VALUE
-- Constraint: v > 0.
stepSizeTolerance
=
1e-08
,
-- Solver to use.
-- Expected format: "VALUE"
-- Constraint: value_in(v, { 'Mumps', 'Umfpack', 'Gmres' })
solver
=
'Mumps'
}
-- Petsc1
Fluid
=
{
Viscosity
=
{
-- How is given the parameter (as a constant, as a Lua function, per quadrature point, etc...). Choose
-- "ignore" if you do not want this parameter (in this case it will stay at nullptr).