Commit 6a6301bd authored by GILLES Sebastien's avatar GILLES Sebastien
Browse files

#880 Poromechanics: add the vertex matching init objects in the input parameter file.

parent 560ed3c0
# Vertex index in mesh 1 / vertex index in mesh 2
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
# Vertex index in mesh 1 / vertex index in mesh 2
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
# Vertex index in mesh 1 / vertex index in mesh 2
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
30 30
31 31
32 32
33 33
34 34
35 35
36 36
# Vertex index in mesh 1 / vertex index in mesh 2
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
30 30
31 31
32 32
33 33
34 34
35 35
36 36
37 37
38 38
39 39
40 40
41 41
42 42
43 43
44 44
45 45
46 46
47 47
48 48
49 49
50 50
51 51
52 52
53 53
54 54
55 55
56 56
57 57
58 58
59 59
60 60
61 61
62 62
63 63
64 64
65 65
66 66
67 67
68 68
69 69
70 70
71 71
72 72
73 73
74 74
75 75
76 76
77 77
78 78
79 79
80 80
81 81
......@@ -1242,5 +1242,33 @@ TransientSource1 = {
porosity = 0.1
-- Fluid
InitVertexMatchingInterpolator10 = {
-- Finite element space for which the dofs index will be associated to each vertex.
-- Expected format: VALUE
finite_element_space = 10,
-- Numbering subsetfor which the dofs index will be associated to each vertex.
-- Expected format: "VALUE"
numbering_subset = 13
} -- InitVertexMatchingInterpolator10
-- Solid
InitVertexMatchingInterpolator20 = {
-- Finite element space for which the dofs index will be associated to each vertex.
-- Expected format: VALUE
finite_element_space = 20,
-- Numbering subsetfor which the dofs index will be associated to each vertex.
-- Expected format: "VALUE"
numbering_subset = 22
} -- InitVertexMatchingInterpolator20
interpolation_file = "${HOME}/Codes/HappyHeart/Data/Interpolation/Poromechanics/Identity_2.hhdata"
MeshVersionFormatted 2
Dimension
2
Vertices
49
0 0 4
0.00166666666667 0 1
0.00333333333333 0 1
0.005 0 1
0.00666666666667 0 1
0.00833333333333 0 1
0.01 0 2
0 0.00166666666667 4
0.00166666666667 0.00166666666667 0
0.00333333333333 0.00166666666667 0
0.005 0.00166666666667 0
0.00666666666667 0.00166666666667 0
0.00833333333333 0.00166666666667 0
0.01 0.00166666666667 2
0 0.00333333333333 4
0.00166666666667 0.00333333333333 0
0.00333333333333 0.00333333333333 0
0.005 0.00333333333333 0
0.00666666666667 0.00333333333333 0
0.00833333333333 0.00333333333333 0
0.01 0.00333333333333 2
0 0.005 4
0.00166666666667 0.005 0
0.00333333333333 0.005 0
0.005 0.005 0
0.00666666666667 0.005 0
0.00833333333333 0.005 0
0.01 0.005 2
0 0.00666666666667 4
0.00166666666667 0.00666666666667 0
0.00333333333333 0.00666666666667 0
0.005 0.00666666666667 0
0.00666666666667 0.00666666666667 0
0.00833333333333 0.00666666666667 0
0.01 0.00666666666667 2
0 0.00833333333333 4
0.00166666666667 0.00833333333333 0
0.00333333333333 0.00833333333333 0
0.005 0.00833333333333 0
0.00666666666667 0.00833333333333 0
0.00833333333333 0.00833333333333 0
0.01 0.00833333333333 2
0 0.01 4
0.00166666666667 0.01 3
0.00333333333333 0.01 3
0.005 0.01 3
0.00666666666667 0.01 3
0.00833333333333 0.01 3
0.01 0.01 3
Edges
24
1 2 1
2 3 1
3 4 1
4 5 1
5 6 1
6 7 1
7 14 2
14 21 2
21 28 2
28 35 2
35 42 2
42 49 2
44 43 3
45 44 3
46 45 3
47 46 3
48 47 3
49 48 3
8 1 4
15 8 4
22 15 4
29 22 4
36 29 4
43 36 4
Triangles
72
1 2 9 0
1 9 8 0
2 3 10 0
2 10 9 0
3 4 11 0
3 11 10 0
4 5 12 0
4 12 11 0
5 6 13 0
5 13 12 0
6 7 14 0
6 14 13 0
8 9 16 0
8 16 15 0
9 10 17 0
9 17 16 0
10 11 18 0
10 18 17 0
11 12 19 0
11 19 18 0
12 13 20 0
12 20 19 0
13 14 21 0
13 21 20 0
15 16 23 0
15 23 22 0
16 17 24 0
16 24 23 0
17 18 25 0
17 25 24 0
18 19 26 0
18 26 25 0
19 20 27 0
19 27 26 0
20 21 28 0
20 28 27 0
22 23 30 0
22 30 29 0
23 24 31 0
23 31 30 0
24 25 32 0
24 32 31 0
25 26 33 0
25 33 32 0
26 27 34 0
26 34 33 0
27 28 35 0
27 35 34 0
29 30 37 0
29 37 36 0
30 31 38 0
30 38 37 0
31 32 39 0
31 39 38 0
32 33 40 0
32 40 39 0
33 34 41 0
33 41 40 0
34 35 42 0
34 42 41 0
36 37 44 0
36 44 43 0
37 38 45 0
37 45 44 0
38 39 46 0
38 46 45 0
39 40 47 0
39 47 46 0
40 41 48 0
40 48 47 0
41 42 49 0
41 49 48 0
End
......@@ -120,8 +120,8 @@ namespace HappyHeart
fluid = 10,
solid = 20
};
using InputParameterTuple = std::tuple
<
InputParameter::TimeManager,
......@@ -175,7 +175,13 @@ namespace HappyHeart
InputParameter::PoromechanicsNS::BulkSolid,
InputParameter::TransientSource<EnumUnderlyingType(SourceIndex::inlet_pressure)>
InputParameter::TransientSource<EnumUnderlyingType(SourceIndex::inlet_pressure)>,
InputParameter::InterpolationFile,
InputParameter::InitVertexMatchingInterpolator<EnumUnderlyingType(InitVertexMatchingInterpolator::solid)>,
InputParameter::InitVertexMatchingInterpolator<EnumUnderlyingType(InitVertexMatchingInterpolator::fluid)>
>;
......
......@@ -193,7 +193,8 @@ namespace HappyHeart
const auto& porosity_varf = GetPorosityVariationalFormulation();
porosity_param_ =
std::make_unique<Private::PorosityParameter>(porosity_varf.GetSystemSolution(porosity_varf.GetNumberingSubset()));
std::make_unique<Private::PorosityParameter>(porosity_varf.GetSystemSolution(porosity_varf.GetNumberingSubset()),
input_parameter_data);
}
}
......
......@@ -9,6 +9,7 @@
//
#include "FiniteElement/FiniteElementSpace/GodOfDofManager.hpp"
#include "FiniteElement/FiniteElementSpace/Private/DofProgramWiseIndexListPerVertexCoordIndexManager.hpp"
#include "ModelInstances/UnderDevelopment/Poromechanics/Private/PorosityParameter.hpp"
#include "ModelInstances/UnderDevelopment/Poromechanics/InputParameterList.hpp"
......@@ -26,7 +27,8 @@ namespace HappyHeart
{
PorosityParameter::PorosityParameter(const GlobalVector& solution_porosity_varf)
PorosityParameter::PorosityParameter(const GlobalVector& solution_porosity_varf,
const InputParameterList& input_parameter_data)
: solution_porosity_varf_(solution_porosity_varf)
{
decltype(auto) god_of_dof_manager = GodOfDofManager::GetInstance();
......@@ -88,6 +90,19 @@ namespace HappyHeart
}
{
using type = NonConformInterpolatorNS::FromVertexMatching;
auto& init_vertex_matching_manager =
::HappyHeart::Private::DofProgramWiseIndexListPerVertexCoordIndexManager::GetInstance();
from_solid_to_fluid_ =
std::make_unique<type>(input_parameter_data,
init_vertex_matching_manager.GetDofProgramWiseIndexListPerVertexCoordIndex(EnumUnderlyingType(InitVertexMatchingInterpolator::solid)),
init_vertex_matching_manager.GetDofProgramWiseIndexListPerVertexCoordIndex(EnumUnderlyingType(InitVertexMatchingInterpolator::fluid)));
}
}
......
......@@ -16,6 +16,10 @@
# include "Parameters/ParameterAtDof.hpp"
# include "Operators/NonConformInterpolator/FromVertexMatching.hpp"
# include "ModelInstances/UnderDevelopment/Poromechanics/InputParameterList.hpp"
namespace HappyHeart
{
......@@ -24,7 +28,7 @@ namespace HappyHeart
namespace PoromechanicsNS
{
namespace Private
{
......@@ -58,9 +62,10 @@ namespace HappyHeart
* \brief Constructor.
*
* \param[in] solution_porosity_varf Solution of the PorosityVariationalFormulation.
*
* \copydetails doxygen_hide_input_parameter_data_arg
*/
explicit PorosityParameter(const GlobalVector& solution_porosity_varf);
explicit PorosityParameter(const GlobalVector& solution_porosity_varf,
const InputParameterList& input_parameter_data);
//! Destructor.
~PorosityParameter() = default;
......@@ -164,6 +169,9 @@ namespace HappyHeart
//! Underlying global vector for porosity on fluid mesh from previous time iteration.
GlobalVector::unique_ptr on_fluid_mesh_vector_previous_time_iteration_ = nullptr;
//! Interpolator to transform porosity from solid \a GodOfDof to the fluid one.
NonConformInterpolatorNS::FromVertexMatching::unique_ptr from_solid_to_fluid_ = nullptr;
};
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment