private pure function redi_ppm_ave(xL, xR, aL, aR, aMean) result(av)
Mean of a PPM parabola between fractional positions xL,xR in [0,1]
(MOM6 ppm_ave). Device-safe: dx<0 / dx>1 FATALs collapse to the
dx==0 branch value (no host I/O on device).
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Variables
Type
Visibility
Attributes
Name
Initial
real(kind=wp),
private
::
a6
real(kind=wp),
private
::
a6o3
real(kind=wp),
private
::
dx
real(kind=wp),
private
::
xave
Source Code
pure function redi_ppm_ave(xL,xR,aL,aR,aMean)result(av)!$acc routine seq!! Mean of a PPM parabola between fractional positions xL,xR in [0,1]!! (MOM6 `ppm_ave`). Device-safe: dx<0 / dx>1 FATALs collapse to the!! dx==0 branch value (no host I/O on device).real(wp),intent(in)::xL,xR,aL,aR,aMeanreal(wp)::avreal(wp)::dx,xave,a6,a6o3dx=xR-xLxave=0.5_wp*(xR+xL)a6o3=2.0_wp*aMean-(aL+aR)a6=3.0_wp*a6o3if(dx>0.0_wp.and.dx<=1.0_wp)thenav=(aL+xave*((aR-aL)+a6))-a6o3*(xR*xR+xR*xL+xL*xL)elseav=aL+(aR-aL)*xR+a6*xR*(1.0_wp-xR)end if end function redi_ppm_ave