$omp& t)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Zone_t), | intent(in) | :: | source_zone | |||
class(HexMesh), | intent(inout), | target | :: | mesh | ||
integer, | intent(in), | dimension(:) | :: | eSides |
Subroutine SourceProlongSolution(source_zone, mesh, eSides) ! ******************************************************************* ! This subroutine prolong the solution from the mesh storage to the faces (source). ! TODO: use openmp (commented) ! TODO: use mpi (see surface integral) ! ******************************************************************* ! use ElementClass implicit none class (Zone_t), intent(in) :: source_zone class (HexMesh), intent(inout), target :: mesh integer, dimension(:), intent(in) :: eSides ! local variables integer :: zoneFaceID, meshFaceID, eID integer, dimension(6) :: meshFaceIDs class(Element), pointer :: elements(:) ! ************************* ! Perform the interpolation ! ************************* ! elements => mesh % elements !$omp parallel private(meshFaceID,eID,meshFaceIDs) shared(elements,mesh,NodalStorage) !!$omp& t) !$omp single ! Loop the zone to get faces and elements ! --------------------------------------- do zoneFaceID = 1, source_zone % no_of_faces meshFaceID = source_zone % faces(zoneFaceID) eID = mesh % faces(meshFaceID) % elementIDs(eSides(zoneFaceID)) meshFaceIDs = mesh % elements(eID) % faceIDs !$omp task depend(inout:elements(eID)) call elements(eID) % ProlongSolutionToFaces(NCONS,& mesh % faces(meshFaceIDs(1)),& mesh % faces(meshFaceIDs(2)),& mesh % faces(meshFaceIDs(3)),& mesh % faces(meshFaceIDs(4)),& mesh % faces(meshFaceIDs(5)),& mesh % faces(meshFaceIDs(6)),& computeQdot = .TRUE.) ! if ( computeGradients ) then ! call elements(eID) % ProlongGradientsToFaces(NGRAD, mesh % faces(meshFaceIDs(1)),& ! mesh % faces(meshFaceIDs(2)),& ! mesh % faces(meshFaceIDs(3)),& ! mesh % faces(meshFaceIDs(4)),& ! mesh % faces(meshFaceIDs(5)),& ! mesh % faces(meshFaceIDs(6)) ) ! end if !$omp end task end do !$omp end single !$omp end parallel End Subroutine SourceProlongSolution