MCPcopy Create free account
hub / github.com/SeisSol/SeisSol / initializeCellLocalMatrices

Method initializeCellLocalMatrices

src/Initializer/CellLocalMatrices.cpp:81–305  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

79}
80
81void seissol::initializer::initializeCellLocalMatrices( seissol::geometry::MeshReader const& i_meshReader,
82 LTSTree* io_ltsTree,
83 LTS* i_lts,
84 Lut* i_ltsLut,
85 TimeStepping const& timeStepping,
86 const parameters::ModelParameters& modelParameters )
87{
88 std::vector<Element> const& elements = i_meshReader.getElements();
89 std::vector<Vertex> const& vertices = i_meshReader.getVertices();
90
91 static_assert(seissol::tensor::AplusT::Shape[0] == seissol::tensor::AminusT::Shape[0], "Shape mismatch for flux matrices");
92 static_assert(seissol::tensor::AplusT::Shape[1] == seissol::tensor::AminusT::Shape[1], "Shape mismatch for flux matrices");
93
94 const unsigned* ltsToMesh = i_ltsLut->getLtsToMeshLut(i_lts->material.mask);
95
96 assert(LayerMask(Ghost) == i_lts->material.mask);
97 assert(LayerMask(Ghost) == i_lts->localIntegration.mask);
98 assert(LayerMask(Ghost) == i_lts->neighboringIntegration.mask);
99
100 assert(ltsToMesh == i_ltsLut->getLtsToMeshLut(i_lts->localIntegration.mask));
101 assert(ltsToMesh == i_ltsLut->getLtsToMeshLut(i_lts->neighboringIntegration.mask));
102
103 const auto* cellInformationAll = io_ltsTree->var(i_lts->cellInformation);
104 for (auto& layer : io_ltsTree->leaves(Ghost)) {
105 CellMaterialData* material = layer.var(i_lts->material);
106 LocalIntegrationData* localIntegration = layer.var(i_lts->localIntegration);
107 NeighboringIntegrationData* neighboringIntegration = layer.var(i_lts->neighboringIntegration);
108 CellLocalInformation* cellInformation = layer.var(i_lts->cellInformation);
109
110#ifdef _OPENMP
111 #pragma omp parallel
112 {
113#endif
114 real ATData[tensor::star::size(0)];
115 real ATtildeData[tensor::star::size(0)];
116 real BTData[tensor::star::size(1)];
117 real CTData[tensor::star::size(2)];
118 auto AT = init::star::view<0>::create(ATData);
119 // AT with elastic parameters in local coordinate system, used for flux kernel
120 auto ATtilde = init::star::view<0>::create(ATtildeData);
121 auto BT = init::star::view<0>::create(BTData);
122 auto CT = init::star::view<0>::create(CTData);
123
124 real TData[seissol::tensor::T::size()];
125 real TinvData[seissol::tensor::Tinv::size()];
126 auto T = init::T::view::create(TData);
127 auto Tinv = init::Tinv::view::create(TinvData);
128
129 real QgodLocalData[tensor::QgodLocal::size()];
130 real QgodNeighborData[tensor::QgodNeighbor::size()];
131 auto QgodLocal = init::QgodLocal::view::create(QgodLocalData);
132 auto QgodNeighbor = init::QgodNeighbor::view::create(QgodNeighborData);
133
134 real rusanovPlusNull[tensor::QcorrLocal::size()]{};
135 real rusanovMinusNull[tensor::QcorrNeighbor::size()]{};
136
137#ifdef _OPENMP
138 #pragma omp for schedule(static)

Callers

nothing calls this directly

Calls 15

sizeFunction · 0.85
setStarMatrixFunction · 0.85
getLtsToMeshLutMethod · 0.80
leavesMethod · 0.80
varMethod · 0.45
getNumberOfCellsMethod · 0.45
getMaterialTypeMethod · 0.45

Tested by

no test coverage detected