@ -5,20 +5,21 @@ import numpy as np
@@ -5,20 +5,21 @@ import numpy as np
from . constants import Constants , default_fill
from wrf . _wrffortran import ( dcomputetk , dinterp3dz , dinterp2dxy , dinterp1d ,
dcomputeseaprs , dfilter2d , dcomputerh , dcomputeuvmet ,
dcomputetd , dcapecalc2d , dcapecalc3d , dcloudfrac2 ,
wrfcttcalc , calcdbz , dcalrelhl , dcalcuh , dcomputepv ,
dcomputeabsvort , dlltoij , dijtoll , deqthecalc ,
omgcalc , virtual_temp , wetbulbcalc , dcomputepw ,
dcomputeseaprs , dfilter2d , dcomputerh ,
dcomputeuvmet , dcomputetd , dcapecalc2d ,
dcapecalc3d , dcloudfrac2 , wrfcttcalc , calcdbz ,
dcalrelhl , dcalcuh , dcomputepv , dcomputeabsvort ,
dlltoij , dijtoll , deqthecalc , omgcalc ,
virtual_temp , wetbulbcalc , dcomputepw ,
wrf_monotonic , wrf_vintrp , dcomputewspd ,
dcomputewdir , dinterp3dz_2dlev ,
fomp_set_num_threads , fomp_get_num_threads ,
fomp_get_max_threads , fomp_get_thread_num ,
fomp_get_num_procs , fomp_in_parallel ,
fomp_set_dynamic , fomp_get_dynamic , fomp_set_nested ,
fomp_get_nested , fomp_set_schedule ,
fomp_get_schedule , fomp_get_thread_limit ,
fomp_set_max_active_levels ,
fomp_set_dynamic , fomp_get_dynamic ,
fomp_set_nested , fomp_get_nested ,
fomp_set_schedule , fomp_get_schedule ,
fomp_get_thread_limit , fomp_set_max_active_levels ,
fomp_get_max_active_levels , fomp_get_level ,
fomp_get_ancestor_thread_num , fomp_get_team_size ,
fomp_get_active_level , fomp_in_final ,
@ -37,6 +38,7 @@ from .specialdec import (uvmet_left_iter, cape_left_iter,
@@ -37,6 +38,7 @@ from .specialdec import (uvmet_left_iter, cape_left_iter,
cloudfrac_left_iter , check_cape_args ,
interplevel_left_iter , check_interplevel_args )
class DiagnosticError ( Exception ) :
""" Raised when an error occurs in a diagnostic routine. """
def __init__ ( self , message = None ) :
@ -66,6 +68,7 @@ class DiagnosticError(Exception):
@@ -66,6 +68,7 @@ class DiagnosticError(Exception):
"""
raise self . __class__ ( message )
# The routines below are thin wrappers around the Fortran functions. These
# are not meant to be called by end users. Use the public API instead for
# that purpose.
@ -73,7 +76,6 @@ class DiagnosticError(Exception):
@@ -73,7 +76,6 @@ class DiagnosticError(Exception):
# IMPORTANT! Unless otherwise noted, all variables used in the routines
# below assume that Fortran-ordered views are being used. This allows
# f2py to pass the array pointers directly to the Fortran routine.
@check_interplevel_args ( is2dlev = False )
@interplevel_left_iter ( is2dlev = False )
@cast_type ( arg_idxs = ( 0 , 1 , 2 ) )
@ -348,9 +350,8 @@ def _avo(u, v, msfu, msfv, msfm, cor, dx, dy, outview=None):
@@ -348,9 +350,8 @@ def _avo(u, v, msfu, msfv, msfm, cor, dx, dy, outview=None):
return result
@check_args ( 0 , 3 , ( 3 , 3 , 3 , 3 , 2 , 2 , 2 , 2 ) , stagger = ( - 1 , - 2 , None , None , - 1 , - 2 , None ,
None ) ,
refstagdim = - 1 )
@check_args ( 0 , 3 , ( 3 , 3 , 3 , 3 , 2 , 2 , 2 , 2 ) ,
stagger = ( - 1 , - 2 , None , None , - 1 , - 2 , None , None ) , refstagdim = - 1 )
@left_iteration ( 3 , 3 , ref_var_idx = 2 , ignore_args = ( 8 , 9 ) )
@cast_type ( arg_idxs = ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ) )
@extract_and_transpose ( )
@ -403,8 +404,10 @@ def _eth(qv, tk, p, outview=None):
@@ -403,8 +404,10 @@ def _eth(qv, tk, p, outview=None):
@cast_type ( arg_idxs = ( 0 , 1 , 2 , 3 ) )
@extract_and_transpose ( )
def _uvmet ( u , v , lat , lon , cen_long , cone , isstag = 0 , has_missing = False ,
umissing = default_fill ( np . float64 ) , vmissing = default_fill ( np . float64 ) ,
uvmetmissing = default_fill ( np . float64 ) , outview = None ) :
umissing = default_fill ( np . float64 ) ,
vmissing = default_fill ( np . float64 ) ,
uvmetmissing = default_fill ( np . float64 ) ,
outview = None ) :
""" Wrapper for dcomputeuvmet.
Located in wrf_user . f90 .
@ -674,12 +677,14 @@ def _cape(p_hpa, tk, qv, ht, ter, sfp, missing, i3dflag, ter_follow,
@@ -674,12 +677,14 @@ def _cape(p_hpa, tk, qv, ht, ter, sfp, missing, i3dflag, ter_follow,
return result
@check_args ( 0 , 3 , ( 3 , 3 ) )
@cloudfrac_left_iter ( )
@cast_type ( arg_idxs = ( 0 , 1 ) , outviews = ( " lowview " , " midview " , " highview " ) )
@extract_and_transpose ( outviews = ( " lowview " , " midview " , " highview " ) )
def _cloudfrac ( vert , rh , vert_inc_w_height , low_thresh , mid_thresh ,
high_thresh , missing , lowview = None , midview = None , highview = None ) :
high_thresh , missing , lowview = None , midview = None ,
highview = None ) :
""" Wrapper for dcloudfrac2.
Located in wrf_cloud_fracf . f90 .
@ -933,6 +938,7 @@ def _vintrp(field, pres, tk, qvp, ght, terrain, sfp, smsfp,
@@ -933,6 +938,7 @@ def _vintrp(field, pres, tk, qvp, ght, terrain, sfp, smsfp,
return result
@check_args ( 0 , 2 , ( 2 , 2 ) )
@left_iteration ( 2 , 2 , ref_var_idx = 0 )
@cast_type ( arg_idxs = ( 0 , 1 ) )
@ -1651,6 +1657,3 @@ def omp_get_wtick():
@@ -1651,6 +1657,3 @@ def omp_get_wtick():
"""
return fomp_get_wtick ( )