GetSensorRange Subroutine

public subroutine GetSensorRange(mesh, minSensor, maxSensor)

!$omp parallel do schedule(static) private(ielem)

!$omp end parallel do

Arguments

Type IntentOptional Attributes Name
class(HexMesh), intent(in) :: mesh
real(kind=RP), intent(out) :: minSensor
real(kind=RP), intent(out) :: maxSensor

Source Code

      subroutine GetSensorRange(mesh, minSensor, maxSensor)
         implicit none
         class(HexMesh), intent(in)  :: mesh
         real(RP),       intent(out) :: minSensor
         real(RP),       intent(out) :: maxSensor
!
!        ---------------
!        Local variables
!        ---------------
!
         integer  :: ielem
         integer  :: ierr


         minSensor =  huge(1.0_RP)/10.0_RP
         maxSensor = -huge(1.0_RP)/10.0_RP

!! !$omp parallel do schedule(static) private(ielem)
         ! do ielem = 1, mesh % no_of_elements
         !    minSensor = min(minSensor, mesh % elements(ielem) % storage % sensor)
         !    maxSensor = max(maxSensor, mesh % elements(ielem) % storage % sensor)
         ! end do
!! !$omp end parallel do

!$omp parallel shared(maxSensor, minSensor, mesh) default(private)
!$omp do reduction(max:maxSensor) schedule(runtime)
         DO ielem = 1, mesh % no_of_elements
            maxSensor = max(maxSensor, mesh % elements(ielem) % storage % sensor)
         END DO
!$omp end do
   
!$omp do reduction(min:minSensor) schedule(runtime)
         DO ielem = 1, mesh % no_of_elements
            minSensor = min(minSensor, mesh % elements(ielem) % storage % sensor)
         END DO
!$omp end do
!$omp end parallel

#ifdef _HAS_MPI_
         call MPI_MinMax(minSensor, maxSensor)
#endif

      end subroutine GetSensorRange