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

Function initializeCellMatrices

src/Initializer/InitProcedure/InitModel.cpp:197–269  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

195};
196
197void initializeCellMatrices(LtsInfo& ltsInfo, seissol::SeisSol& seissolInstance) {
198 const auto& seissolParams = seissolInstance.getSeisSolParameters();
199
200 // \todo Move this to some common initialization place
201 auto& meshReader = seissolInstance.meshReader();
202 auto& memoryManager = seissolInstance.getMemoryManager();
203
204 seissol::initializer::initializeCellLocalMatrices(meshReader,
205 memoryManager.getLtsTree(),
206 memoryManager.getLts(),
207 memoryManager.getLtsLut(),
208 ltsInfo.timeStepping,
209 seissolParams.model);
210
211 if (seissolParams.drParameters.etaHack != 1.0) {
212 logWarning(seissol::MPI::mpi.rank())
213 << "The \"eta hack\" has been enabled to mitigate quasi-divergent solutions in the "
214 "friction law. The results may not conform to the existing benchmarks.";
215 }
216
217 seissol::initializer::initializeDynamicRuptureMatrices(meshReader,
218 memoryManager.getLtsTree(),
219 memoryManager.getLts(),
220 memoryManager.getLtsLut(),
221 memoryManager.getDynamicRuptureTree(),
222 memoryManager.getDynamicRupture(),
223 ltsInfo.ltsMeshToFace,
224 *memoryManager.getGlobalDataOnHost(),
225 seissolParams.drParameters.etaHack);
226
227 memoryManager.initFrictionData();
228
229 seissol::initializer::initializeBoundaryMappings(meshReader,
230 memoryManager.getEasiBoundaryReader(),
231 memoryManager.getLtsTree(),
232 memoryManager.getLts(),
233 memoryManager.getLtsLut());
234
235#ifdef ACL_DEVICE
236 initializer::copyCellMatricesToDevice(memoryManager.getLtsTree(),
237 memoryManager.getLts(),
238 memoryManager.getDynamicRuptureTree(),
239 memoryManager.getDynamicRupture(),
240 memoryManager.getBoundaryTree(),
241 memoryManager.getBoundary());
242
243 memoryManager.recordExecutionPaths(seissolParams.model.plasticity);
244#endif
245
246 auto itmParameters = seissolInstance.getSeisSolParameters().model.itmParameters;
247
248 if (itmParameters.itmEnabled) {
249 auto& timeMirrorManagers = seissolInstance.getTimeMirrorManagers();
250 const double scalingFactor = itmParameters.itmVelocityScalingFactor;
251 const double startingTime = itmParameters.itmStartingTime;
252
253 auto* mLtsTree = memoryManager.getLtsTree();
254 auto* mLts = memoryManager.getLts();

Callers 1

initModelMethod · 0.85

Calls 14

getLtsTreeMethod · 0.80
getLtsMethod · 0.80
getLtsLutMethod · 0.80
rankMethod · 0.80
getDynamicRuptureTreeMethod · 0.80
getDynamicRuptureMethod · 0.80
getGlobalDataOnHostMethod · 0.80
initFrictionDataMethod · 0.80
getEasiBoundaryReaderMethod · 0.80
getBoundaryTreeMethod · 0.80
getBoundaryMethod · 0.80

Tested by

no test coverage detected