28 lines
1.4 KiB
Python
28 lines
1.4 KiB
Python
def refstate_meandensity(rho_in,grd,area_xyz_in):
|
|
# def refstate_meandensity(rho,zlev,area_xyz) ############################################
|
|
# written by : Gabriel Wolf, g.a.wolf@reading.ac.uk
|
|
# adapted from get_refstate_meandensity.m of Remi Tailleux (10.04.2013)
|
|
# last modified : 20.09.2018
|
|
# Content/Description ####################################################################
|
|
# Usage : from gw_ocean_refstate import refstate_meandensity
|
|
# Input : area_xyz, rho, zlev
|
|
# area_xyz : hor. area for 3d grid [m**2], 3d
|
|
# rho : density [kg m**-3], 3d
|
|
# grd : Input grid [python class]
|
|
# Output : pp_rhor
|
|
# pp_rhor : interpolant for reference state
|
|
# ########################################################################################
|
|
# Load modules
|
|
import numpy as np
|
|
from scipy import interpolate
|
|
# Allocation
|
|
rhor = np.zeros([grd.Nz,1])
|
|
# compute hor. averaged density field
|
|
rho_surf = area_xyz_in*rho_in
|
|
mask = np.isfinite(rho_surf)
|
|
rhor = sum(sum(mask*rho_surf,1),0)/sum(sum(area_xyz_in*mask,1),0)
|
|
# define arrays for interpolation of density profiles
|
|
pp_rhor = interpolate.PchipInterpolator(grd.z, rhor, axis=0)
|
|
# return interpolant for reference state
|
|
return pp_rhor
|