| 194 | } |
| 195 | |
| 196 | void seissol::time_stepping::TimeCluster::computeSources() { |
| 197 | #ifdef ACL_DEVICE |
| 198 | device.api->putProfilingMark("computeSources", device::ProfilingColors::Blue); |
| 199 | #endif |
| 200 | SCOREP_USER_REGION( "computeSources", SCOREP_USER_REGION_TYPE_FUNCTION ) |
| 201 | |
| 202 | // Return when point sources not initialized. This might happen if there |
| 203 | // are no point sources on this rank. |
| 204 | auto* pointSourceCluster = [&]() -> kernels::PointSourceCluster* { |
| 205 | #ifdef ACL_DEVICE |
| 206 | if (executor == Executor::Device) { |
| 207 | return m_sourceCluster.device.get(); |
| 208 | } |
| 209 | else { |
| 210 | return m_sourceCluster.host.get(); |
| 211 | } |
| 212 | #else |
| 213 | return m_sourceCluster.host.get(); |
| 214 | #endif |
| 215 | }(); |
| 216 | |
| 217 | if (pointSourceCluster) { |
| 218 | m_loopStatistics->begin(m_regionComputePointSources); |
| 219 | auto timeStepSizeLocal = timeStepSize(); |
| 220 | pointSourceCluster->addTimeIntegratedPointSources(ct.correctionTime, ct.correctionTime + timeStepSizeLocal, streamRuntime); |
| 221 | m_loopStatistics->end(m_regionComputePointSources, pointSourceCluster->size(), m_profilingId); |
| 222 | } |
| 223 | #ifdef ACL_DEVICE |
| 224 | device.api->popLastProfilingMark(); |
| 225 | #endif |
| 226 | } |
| 227 | |
| 228 | void seissol::time_stepping::TimeCluster::computeDynamicRupture( seissol::initializer::Layer& layerData ) { |
| 229 | if (layerData.getNumberOfCells() == 0) return; |
nothing calls this directly
no test coverage detected