| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | i | |||
| integer, | intent(in) | :: | j | |||
| integer, | intent(in) | :: | k |
real function interp_temperature_w(i, j, k) ! interpolates the temperature at w-grid location i,j,k use modglobal, only : dzf, dzh use modfields, only : thl0 integer, intent(in) :: i, j, k real :: wk, wkm ! linear interpolation between zf(k-1) and zf(k) to zh(k) weights level k by ! dzf(k-1) and level k-1 by dzf(k); a solid neighbour (mask_c = 0) drops out and ! the fluid value is used on its own, as before wk = dzf(k-1)*mask_c(i,j,k ) wkm = dzf(k )*mask_c(i,j,k-1) if (wk + wkm > 0.) then interp_temperature_w = (thl0(i,j,k)*wk + thl0(i,j,k-1)*wkm) / (wk + wkm) else interp_temperature_w = 0. end if return end function interp_temperature_w