boole_layer_combine Subroutine

private pure subroutine boole_layer_combine(r5, dz, dpa, intz_dpa)

Boole weights of the five sub-point density anomalies r5 (top to bottom): dpa = g*dz*<rho'> and the first moment from the top.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r5(N_BOOLE)

Density anomaly at the five sub-points (kg/m^3).

real(kind=wp), intent(in) :: dz

Layer thickness (m).

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

g * int rho’ dz over the layer (Pa).

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

0.5 * g * dz^2 * bracket (Pa*m), first moment from the top.


Called by

proc~~boole_layer_combine~~CalledByGraph proc~boole_layer_combine boole_layer_combine proc~boole_dpa_intz_layer_wright boole_dpa_intz_layer_wright proc~boole_dpa_intz_layer_wright->proc~boole_layer_combine proc~boole_dpa_face_wright boole_dpa_face_wright proc~boole_dpa_face_wright->proc~boole_dpa_intz_layer_wright proc~compute_fv_mom6_reconstruct_impl compute_fv_mom6_reconstruct_impl proc~compute_fv_mom6_reconstruct_impl->proc~boole_dpa_intz_layer_wright proc~compute_fv_mom6_reconstruct_impl->proc~boole_dpa_face_wright proc~ocean_pressure_force_compute ocean_pressure_force_compute proc~ocean_pressure_force_compute->proc~compute_fv_mom6_reconstruct_impl proc~run_stage run_stage proc~run_stage->proc~ocean_pressure_force_compute proc~run_stage_split run_stage_split proc~run_stage_split->proc~ocean_pressure_force_compute proc~ocean_dyn_step ocean_dyn_step proc~ocean_dyn_step->proc~run_stage proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~run_stage_split

Variables

Type Visibility Attributes Name Initial
real(kind=wp), private :: rho_anom

Source Code

   pure subroutine boole_layer_combine(r5, dz, dpa, intz_dpa)
      !$acc routine seq
      !! Boole weights of the five sub-point density anomalies `r5` (top
      !! to bottom): `dpa = g*dz*<rho'>` and the first moment from the top.
      real(wp), intent(in)  :: r5(N_BOOLE)
         !! Density anomaly at the five sub-points (kg/m^3).
      real(wp), intent(in)  :: dz
         !! Layer thickness (m).
      real(wp), intent(out) :: dpa
         !! g * int rho' dz over the layer (Pa).
      real(wp), intent(out) :: intz_dpa
         !! 0.5 * g * dz^2 * bracket (Pa*m), first moment from the top.

      real(wp) :: rho_anom

      rho_anom = (1.0_wp/90.0_wp)*(7.0_wp*(r5(1) + r5(5)) &
                                   + 32.0_wp*(r5(2) + r5(4)) + 12.0_wp*r5(3))
      dpa = GRAVITY*dz*rho_anom
      intz_dpa = 0.5_wp*GRAVITY*dz*dz*(rho_anom &
                                       - (1.0_wp/90.0_wp)*(16.0_wp*(r5(4) - r5(2)) + 7.0_wp*(r5(5) - r5(1))))
   end subroutine boole_layer_combine