EvalTotals Subroutine

public subroutine EvalTotals(Uin, vol, surfAvg)

Uses

  • proc~~evaltotals~~UsesGraph proc~evaltotals EvalTotals module~modgvec_globals MODgvec_Globals proc~evaltotals->module~modgvec_globals module~modgvec_mpi MODgvec_MPI proc~evaltotals->module~modgvec_mpi module~modgvec_sol_var_mhd3d MODgvec_sol_var_MHD3D proc~evaltotals->module~modgvec_sol_var_mhd3d iso_fortran_env iso_fortran_env module~modgvec_globals->iso_fortran_env module~modgvec_sol_var_mhd3d->module~modgvec_globals module~modgvec_c_sol_var MODgvec_c_sol_var module~modgvec_sol_var_mhd3d->module~modgvec_c_sol_var module~modgvec_c_sol_var->module~modgvec_globals

Evaluate total volume and average surface

Arguments

Type IntentOptional Attributes Name
class(t_sol_var_MHD3D), intent(in) :: Uin

input solution

real(kind=wp), intent(out) :: vol

total integral of the volume

real(kind=wp), intent(out) :: surfAvg

average polodial surface


Calls

proc~~evaltotals~~CallsGraph proc~evaltotals EvalTotals interface~par_reduce par_Reduce proc~evaltotals->interface~par_reduce proc~evalaux EvalAux proc~evaltotals->proc~evalaux proc~par_reduce_array1d par_Reduce_array1D interface~par_reduce->proc~par_reduce_array1d proc~par_reduce_array2d par_Reduce_array2D interface~par_reduce->proc~par_reduce_array2d proc~par_reduce_scalar par_Reduce_scalar interface~par_reduce->proc~par_reduce_scalar proc~par_reduce_scalar_int par_Reduce_scalar_int interface~par_reduce->proc~par_reduce_scalar_int __perfoff __perfoff proc~evalaux->__perfoff __perfon __perfon proc~evalaux->__perfon eval_all eval_all proc~evalaux->eval_all interface~par_allreduce par_AllReduce proc~evalaux->interface~par_allreduce proc~base_evaldof t_base%base_evalDOF proc~evalaux->proc~base_evaldof proc~base_evaldof_all t_base%base_evalDOF_all proc~evalaux->proc~base_evaldof_all proc~par_allreduce_array1d par_AllReduce_array1D interface~par_allreduce->proc~par_allreduce_array1d proc~par_allreduce_array2d par_AllReduce_array2D interface~par_allreduce->proc~par_allreduce_array2d proc~par_allreduce_scalar par_AllReduce_scalar interface~par_allreduce->proc~par_allreduce_scalar proc~par_allreduce_scalar_int par_AllReduce_scalar_int interface~par_allreduce->proc~par_allreduce_scalar_int proc~base_evaldof->__perfoff proc~base_evaldof->__perfon proc~fbase_evaldof_ip_tens t_fBase%fBase_evalDOF_IP_tens proc~base_evaldof->proc~fbase_evaldof_ip_tens proc~base_evaldof_all->__perfoff proc~base_evaldof_all->__perfon proc~base_evaldof_all->proc~fbase_evaldof_ip_tens mpi_reduce mpi_reduce proc~par_reduce_array1d->mpi_reduce proc~par_reduce_array2d->mpi_reduce proc~par_reduce_scalar->mpi_reduce proc~par_reduce_scalar_int->mpi_reduce __dgemm_nn __dgemm_nn proc~fbase_evaldof_ip_tens->__dgemm_nn proc~fbase_evaldof_xn t_fBase%fBase_evalDOF_xn proc~fbase_evaldof_ip_tens->proc~fbase_evaldof_xn mpi_allreduce mpi_allreduce proc~par_allreduce_array1d->mpi_allreduce proc~par_allreduce_array2d->mpi_allreduce proc~par_allreduce_scalar->mpi_allreduce proc~par_allreduce_scalar_int->mpi_allreduce __matvec_n __matvec_n proc~fbase_evaldof_xn->__matvec_n proc~fbase_eval_xn t_fBase%fBase_eval_xn proc~fbase_evaldof_xn->proc~fbase_eval_xn

Called by

proc~~evaltotals~~CalledByGraph proc~evaltotals EvalTotals proc~writestatetoascii WriteStateToASCII proc~writestatetoascii->proc~evaltotals interface~writestate WriteState interface~writestate->proc~writestatetoascii proc~initsolutionmhd3d t_functional_mhd3d%InitSolutionMHD3D proc~initsolutionmhd3d->interface~writestate proc~minimizemhd3d_descent MinimizeMHD3D_descent proc~minimizemhd3d_descent->interface~writestate proc~minimizemhd3d t_functional_mhd3d%MinimizeMHD3D proc~minimizemhd3d->proc~minimizemhd3d_descent

Source Code

SUBROUTINE EvalTotals(Uin,vol,surfAvg)
! MODULES
  USE MODgvec_globals      , ONLY: TWOPI
  USE MODgvec_MPI          , ONLY: par_Reduce
  USE MODgvec_sol_var_MHD3D, ONLY: t_sol_var_MHD3D
  IMPLICIT NONE
!-----------------------------------------------------------------------------------------------------------------------------------
! INPUT VARIABLES
  CLASS(t_sol_var_MHD3D), INTENT(IN ) :: Uin  !! input solution
!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
  REAL(wp)              , INTENT(OUT) :: vol      !! total integral of the volume
  REAL(wp)              , INTENT(OUT) :: surfAvg  !! average polodial surface
!-----------------------------------------------------------------------------------------------------------------------------------
! LOCAL VARIABLES
  INTEGER             :: iGP,i_mn,JacCheck
!===================================================================================================================================
  JacCheck=2
  CALL EvalAux(Uin,JacCheck)
  IF(JacCheck.EQ.-1) THEN
      CALL abort(__STAMP__, &
          ' detJ<0 in EvalAux, called from EvalTotals!!!' )
  END IF
  vol=0.0_wp
  surfAvg=0.0_wp
!$OMP PARALLEL DO       &
!$OMP   SCHEDULE(STATIC) DEFAULT(NONE)    &
!$OMP   REDUCTION(+:vol,surfAvg) PRIVATE(iGP,i_mn) &
!$OMP   SHARED(nGP_str,nGP_end,mn_IP,J_h,J_p,w_GP)
  DO iGP=nGP_str,nGP_end
    DO i_mn=1,mn_IP
      vol    =vol    +ABS(J_h(i_mn,iGP)*J_p(i_mn,iGP))*w_GP(iGP)
      surfAvg=surfAvg+ABS(J_p(i_mn,iGP))*w_GP(iGP)
    END DO
  END DO
!$OMP END PARALLEL DO
  CALL par_Reduce(vol,'SUM',0)
  CALL par_Reduce(surfAvg,'SUM',0)
  vol     = dthet_dzeta *vol
  surfAvg = dthet_dzeta *surfAvg /TWOPI

END SUBROUTINE EvalTotals