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

Method initializeFaceDisplacements

src/Initializer/MemoryManager.cpp:737–769  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

735#endif
736
737void seissol::initializer::MemoryManager::initializeFaceDisplacements()
738{
739 for (auto& layer : m_ltsTree.leaves(m_lts.faceDisplacements.mask)) {
740 if (layer.getBucketSize(m_lts.faceDisplacementsBuffer) == 0) {
741 continue;
742 }
743 real* (*displacements)[4] = layer.var(m_lts.faceDisplacements);
744 real* bucket = static_cast<real*>(layer.bucket(m_lts.faceDisplacementsBuffer));
745 real* (*displacementsDevice)[4] = layer.var(m_lts.faceDisplacementsDevice);
746 real* bucketDevice = static_cast<real*>(layer.bucket(m_lts.faceDisplacementsBuffer, seissol::initializer::AllocationPlace::Device));
747
748#ifdef _OPENMP
749#pragma omp parallel for schedule(static) default(none) shared(layer, displacements, bucket, displacementsDevice, bucketDevice)
750#endif // _OPENMP
751 for (unsigned cell = 0; cell < layer.getNumberOfCells(); ++cell) {
752 for (unsigned face = 0; face < 4; ++face) {
753 if (displacements[cell][face] != nullptr) {
754 // Remove constant part that was added in deriveDisplacementsBucket.
755 // We then have the pointer offset that needs to be added to the bucket.
756 // The final value of this pointer then points to a valid memory address
757 // somewhere in the bucket.
758 auto offset = (reinterpret_cast<std::intptr_t>(displacements[cell][face]) - 1);
759 displacements[cell][face] = bucket + offset;
760 displacementsDevice[cell][face] = bucketDevice + offset;
761 for (unsigned dof = 0; dof < tensor::faceDisplacement::size(); ++dof) {
762 // zero displacements
763 displacements[cell][face][dof] = static_cast<real>(0.0);
764 }
765 }
766 }
767 }
768 }
769}
770
771void seissol::initializer::MemoryManager::initializeMemoryLayout()
772{

Callers

nothing calls this directly

Calls 6

sizeFunction · 0.85
leavesMethod · 0.80
getBucketSizeMethod · 0.80
bucketMethod · 0.80
varMethod · 0.45
getNumberOfCellsMethod · 0.45

Tested by

no test coverage detected