| 142 | } |
| 143 | |
| 144 | void TimeCommon::computeBatchedIntegrals(Time& time, |
| 145 | const double timeStepStart, |
| 146 | const double timeStepWidth, |
| 147 | ConditionalPointersToRealsTable& table, |
| 148 | seissol::parallel::runtime::StreamRuntime& runtime) { |
| 149 | #ifdef ACL_DEVICE |
| 150 | // Compute time integrated dofs using neighbours derivatives using the GTS relation, |
| 151 | // i.e. the expansion point is around 'timeStepStart' |
| 152 | ConditionalKey key(*KernelNames::NeighborFlux, *ComputationKind::WithGtsDerivatives); |
| 153 | if (table.find(key) != table.end()) { |
| 154 | auto& entry = table[key]; |
| 155 | time.computeBatchedIntegral( |
| 156 | timeStepStart, |
| 157 | timeStepStart, |
| 158 | timeStepStart + timeStepWidth, |
| 159 | const_cast<const real**>((entry.get(inner_keys::Wp::Id::Derivatives))->getDeviceDataPtr()), |
| 160 | (entry.get(inner_keys::Wp::Id::Idofs))->getDeviceDataPtr(), |
| 161 | (entry.get(inner_keys::Wp::Id::Idofs))->getSize(), |
| 162 | runtime); |
| 163 | } |
| 164 | |
| 165 | // Compute time integrated dofs using neighbours derivatives using the LTS relation, |
| 166 | // i.e. the expansion point is around '0' |
| 167 | key = ConditionalKey(*KernelNames::NeighborFlux, *ComputationKind::WithLtsDerivatives); |
| 168 | if (table.find(key) != table.end()) { |
| 169 | auto& entry = table[key]; |
| 170 | time.computeBatchedIntegral( |
| 171 | 0.0, |
| 172 | timeStepStart, |
| 173 | timeStepStart + timeStepWidth, |
| 174 | const_cast<const real**>((entry.get(inner_keys::Wp::Id::Derivatives))->getDeviceDataPtr()), |
| 175 | (entry.get(inner_keys::Wp::Id::Idofs))->getDeviceDataPtr(), |
| 176 | (entry.get(inner_keys::Wp::Id::Idofs))->getSize(), |
| 177 | runtime); |
| 178 | } |
| 179 | #else |
| 180 | logError() << "No GPU implementation provided"; |
| 181 | #endif |
| 182 | } |
| 183 | |
| 184 | } // namespace seissol::kernels |
nothing calls this directly
no test coverage detected