| 195 | }; |
| 196 | |
| 197 | void 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(); |
no test coverage detected