The module 'fv_grid_utils' contains routines for setting up and computing grid-related quantities. More...
Data Types | |
interface | fill_ghost |
Functions/Subroutines | |
subroutine, public | grid_utils_init (Atm, npx, npy, npz, non_ortho, grid_type, c2l_order) |
subroutine, public | grid_utils_end |
subroutine, public | direct_transform (c, i1, i2, j1, j2, lon_p, lat_p, n, lon, lat) |
The subroutine 'direct_transform' performs a direct transformation of the standard (symmetrical) cubic grid to a locally enhanced high-res grid on the sphere. More... | |
subroutine, public | cube_transform (c, i1, i2, j1, j2, lon_p, lat_p, n, lon, lat) |
real function, public | inner_prod (v1, v2) |
subroutine | efactor_a2c_v (edge_vect_s, edge_vect_n, edge_vect_w, edge_vect_e, non_ortho, grid, agrid, npx, npy, bounded_domain, bd) |
The subroutine 'efactor_a2c_v' initializes interpolation factors at face edges for interpolating vectors from A to C grid. More... | |
subroutine | edge_factors (edge_s, edge_n, edge_w, edge_e, non_ortho, grid, agrid, npx, npy, bd) |
The subroutine 'edge_factors' initializes interpolation factors at face edges for interpolation from A to B grid. More... | |
subroutine, public | gnomonic_grids (grid_type, im, lon, lat) |
subroutine | gnomonic_ed (im, lamda, theta) |
The subroutine 'gnomonic_ed' computes the equal distances along the 4 edges of the cubed sphere. More... | |
subroutine | gnomonic_ed_limited (im, in, nghost, lL, lR, uL, uR, lamda, theta) |
The subroutine 'gnomonic_ed_limited' creates a limited-area equidistant gnomonic grid with corners given by lL (lower-left), lR (lower-right), uL (upper-left),and uR (upper-right) with im by in cells. More... | |
subroutine | gnomonic_angl (im, lamda, theta) |
subroutine | gnomonic_dist (im, lamda, theta) |
subroutine | symm_ed (im, lamda, theta) |
subroutine | latlon2xyz2 (lon, lat, p3) |
subroutine, public | latlon2xyz (p, e, id) |
The subroutine 'latlon2xyz' maps (lon, lat) to (x,y,z) More... | |
subroutine | mirror_xyz (p1, p2, p0, p) |
The subroutine 'mirror_xyz' computes the mirror image of p0(x0, y0, z0) as p(x, y, z) given the "mirror" as defined by p1(x1, y1, z1), p2(x2, y2, z2), and the center of the sphere. More... | |
subroutine | mirror_latlon (lon1, lat1, lon2, lat2, lon0, lat0, lon3, lat3) |
The subroutine 'mirror_latlon' computes the mirror image of (lon0, lat0) as (lon3, lat3) given the "mirror" as defined by (lon1, lat1), (lon2, lat2), and center of the sphere. More... | |
subroutine, public | cart_to_latlon (np, q, xs, ys) |
subroutine, public | vect_cross (e, p1, p2) |
The subroutine 'vect_cross performs cross products of 3D vectors: e = P1 X P2. More... | |
subroutine | get_center_vect (npx, npy, pp, u1, u2, bd) |
subroutine, public | get_unit_vect2 (e1, e2, uc) |
subroutine | get_unit_vect3 (p1, p2, uc) |
subroutine, public | normalize_vect (e) |
The subroutine 'normalize_vect' makes 'e' a unit vector. More... | |
subroutine, public | intp_great_circle (beta, p1, p2, x_o, y_o) |
subroutine, public | spherical_linear_interpolation (beta, p1, p2, pb) |
The subroutine 'spherical_linear_interpolation' interpolates along the great circle connecting points p1 and p2. More... | |
subroutine, public | mid_pt_sphere (p1, p2, pm) |
subroutine | mid_pt3_cart (p1, p2, e) |
subroutine, public | mid_pt_cart (p1, p2, e3) |
real function, public | great_circle_dist (q1, q2, radius) |
real(kind=r_grid) function | great_circle_dist_cart (v1, v2, radius) |
The function 'great_circle_dist_cart' calculates the normalized great circle distance between 'v1' and 'v2'. More... | |
subroutine | intersect (a1, a2, b1, b2, radius, x_inter, local_a, local_b) |
The subroutine 'intersect' calculates the intersection of two great circles. More... | |
subroutine | intersect_cross (a1, a2, b1, b2, radius, x_inter, local_a, local_b) |
The subroutine 'intersect_cross' calculates the intersection of two great circles. More... | |
subroutine, public | unit_vect_latlon (pp, elon, elat) |
real(kind=r_grid) function, public | v_prod (v1, v2) |
subroutine | init_cubed_to_latlon (gridstruct, hydrostatic, agrid, grid_type, ord, bd) |
subroutine, public | cubed_to_latlon (u, v, ua, va, gridstruct, npx, npy, km, mode, grid_type, domain, bounded_domain, c2l_ord, bd) |
subroutine | c2l_ord4 (u, v, ua, va, gridstruct, npx, npy, km, grid_type, domain, bounded_domain, mode, bd) |
subroutine, public | c2l_ord2 (u, v, ua, va, gridstruct, km, grid_type, bd, do_halo) |
subroutine, public | expand_cell (q1, q2, q3, q4, a1, a2, a3, a4, fac) |
subroutine, public | cell_center2 (q1, q2, q3, q4, e2) |
subroutine | cell_center3 (p1, p2, p3, p4, ec) |
The subroutine 'cell_center3' gets the center position of a cell. More... | |
real(kind=r_grid) function, public | get_area (p1, p4, p2, p3, radius) |
real(kind=r_grid) function | dist2side (v1, v2, point) |
The function 'dist2side' calculates the shortest normalized distance on a sphere from point to straight line defined by 'v1' and 'v2'. More... | |
real(kind=r_grid) function, public | dist2side_latlon (v1, v2, point) |
The function 'dist2side_latlon' is the version of 'dist2side' that takes points in latitude-longitude coordinates. More... | |
real(kind=r_grid) function, public | spherical_angle (p1, p2, p3) |
real(kind=r_grid) function, public | cos_angle (p1, p2, p3) |
real function, public | g_sum (domain, p, ifirst, ilast, jfirst, jlast, ngc, area, mode, reproduce) |
The function 'g_sum' is the fast version of 'globalsum'. More... | |
real function, public | global_qsum (p, ifirst, ilast, jfirst, jlast) |
The function 'global_qsum' computes the quick global sum without area weighting. More... | |
subroutine, public | global_mx (q, n_g, qmin, qmax, bd) |
subroutine | global_mx_c (q, i1, i2, j1, j2, qmin, qmax) |
The subroutine 'global_mx_c' computes the global max and min at the cell corners. More... | |
subroutine | fill_ghost_r4 (q, npx, npy, value, bd) |
subroutine | fill_ghost_r8 (q, npx, npy, value, bd) |
subroutine, public | make_eta_level (km, pe, area, kks, ak, bk, ptop, domain, bd) |
subroutine | invert_matrix (n, a, x) |
subroutine | elgs (a, n, indx) |
The subroutine 'elgs' performs the partial-pivoting gaussian elimination. More... | |
subroutine, public | get_latlon_vector (pp, elon, elat) |
subroutine, public | project_sphere_v (np, f, e) |
subroutine, public | update_dwinds_phys (is, ie, js, je, isd, ied, jsd, jed, dt, u_dt, v_dt, u, v, gridstruct, npx, npy, npz, domain) |
The subroutine 'update_dwinds_phys' transforms the wind tendencies from the A grid to the D grid for the final update. More... | |
subroutine, public | update2d_dwinds_phys (is, ie, js, je, isd, ied, jsd, jed, dt, u_dt, v_dt, u, v, gridstruct, npx, npy, npz, domain) |
The subroutine 'update2d_dwinds_phys' transforms the wind tendencies. More... | |
subroutine | init_mq (phis, gridstruct, npx, npy, is, ie, js, je, ng) |
Variables | |
logical, public | symm_grid |
integer, parameter, public | f_p = selected_real_kind(20) |
real, parameter, public | big_number =1.d8 |
real, parameter | tiny_number =1.d-8 |
real(kind=r_grid) | radius =cnst_radius |
real, parameter, public | ptop_min =1.d-8 |
The module 'fv_grid_utils' contains routines for setting up and computing grid-related quantities.
Many of these are useful for computing diagnostics or setting up initial conditions.
subroutine, public fv_grid_utils_mod::c2l_ord2 | ( | real, dimension(bd%isd:bd%ied,bd%jsd:bd%jed+1,km), intent(in) | u, |
real, dimension(bd%isd:bd%ied+1,bd%jsd:bd%jed,km), intent(in) | v, | ||
real, dimension(bd%isd:bd%ied, bd%jsd:bd%jed,km), intent(out) | ua, | ||
real, dimension(bd%isd:bd%ied, bd%jsd:bd%jed,km), intent(out) | va, | ||
type(fv_grid_type), intent(in), target | gridstruct, | ||
integer, intent(in) | km, | ||
integer, intent(in) | grid_type, | ||
type(fv_grid_bounds_type), intent(in) | bd, | ||
logical, intent(in) | do_halo | ||
) |
Definition at line 2573 of file fv_grid_utils.F90.
|
private |
Definition at line 2433 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::cart_to_latlon | ( | integer, intent(in) | np, |
real(kind=r_grid), dimension(3,np), intent(inout) | q, | ||
real(kind=r_grid), dimension(np), intent(inout) | xs, | ||
real(kind=r_grid), dimension(np), intent(inout) | ys | ||
) |
Definition at line 1782 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::cell_center2 | ( | real(kind=r_grid), dimension(2), intent(in) | q1, |
real(kind=r_grid), dimension(2), intent(in) | q2, | ||
real(kind=r_grid), dimension(2), intent(in) | q3, | ||
real(kind=r_grid), dimension(2), intent(in) | q4, | ||
real(kind=r_grid), dimension(2), intent(out) | e2 | ||
) |
Definition at line 2726 of file fv_grid_utils.F90.
|
private |
The subroutine 'cell_center3' gets the center position of a cell.
Definition at line 2754 of file fv_grid_utils.F90.
real(kind=r_grid) function, public fv_grid_utils_mod::cos_angle | ( | real(kind=r_grid), dimension(3), intent(in) | p1, |
real(kind=r_grid), dimension(3), intent(in) | p2, | ||
real(kind=r_grid), dimension(3), intent(in) | p3 | ||
) |
Definition at line 2921 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::cube_transform | ( | real(kind=r_grid), intent(in) | c, |
integer, intent(in) | i1, | ||
integer, intent(in) | i2, | ||
integer, intent(in) | j1, | ||
integer, intent(in) | j2, | ||
real(kind=r_grid), intent(in) | lon_p, | ||
real(kind=r_grid), intent(in) | lat_p, | ||
integer, intent(in) | n, | ||
real(kind=r_grid), dimension(i1:i2,j1:j2), intent(inout) | lon, | ||
real(kind=r_grid), dimension(i1:i2,j1:j2), intent(inout) | lat | ||
) |
Definition at line 975 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::cubed_to_latlon | ( | real, dimension(bd%isd:bd%ied,bd%jsd:bd%jed+1,km), intent(inout) | u, |
real, dimension(bd%isd:bd%ied+1,bd%jsd:bd%jed,km), intent(inout) | v, | ||
real, dimension(bd%isd:bd%ied, bd%jsd:bd%jed,km), intent(out) | ua, | ||
real, dimension(bd%isd:bd%ied, bd%jsd:bd%jed,km), intent(out) | va, | ||
type(fv_grid_type), intent(in) | gridstruct, | ||
integer, intent(in) | npx, | ||
integer, intent(in) | npy, | ||
integer, intent(in) | km, | ||
integer, intent(in) | mode, | ||
integer, intent(in) | grid_type, | ||
type(domain2d), intent(inout) | domain, | ||
logical, intent(in) | bounded_domain, | ||
integer, intent(in) | c2l_ord, | ||
type(fv_grid_bounds_type), intent(in) | bd | ||
) |
Definition at line 2412 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::direct_transform | ( | real(kind=r_grid), intent(in) | c, |
integer, intent(in) | i1, | ||
integer, intent(in) | i2, | ||
integer, intent(in) | j1, | ||
integer, intent(in) | j2, | ||
real(kind=r_grid), intent(in) | lon_p, | ||
real(kind=r_grid), intent(in) | lat_p, | ||
integer, intent(in) | n, | ||
real(kind=r_grid), dimension(i1:i2,j1:j2), intent(inout) | lon, | ||
real(kind=r_grid), dimension(i1:i2,j1:j2), intent(inout) | lat | ||
) |
The subroutine 'direct_transform' performs a direct transformation of the standard (symmetrical) cubic grid to a locally enhanced high-res grid on the sphere.
It is an application of the Schmidt transformation at the south pole followed by a pole_shift_to_target (rotation) operation.
[in] | c | Stretching factor |
[in] | lat_p | center location of the target face, radian |
[in] | n | grid face number |
Definition at line 920 of file fv_grid_utils.F90.
|
private |
The function 'dist2side' calculates the shortest normalized distance on a sphere from point to straight line defined by 'v1' and 'v2'.
This version uses cartesian coordinates.
Definition at line 2822 of file fv_grid_utils.F90.
real(kind=r_grid) function, public fv_grid_utils_mod::dist2side_latlon | ( | real(kind=r_grid), dimension(2), intent(in) | v1, |
real(kind=r_grid), dimension(2), intent(in) | v2, | ||
real(kind=r_grid), dimension(2), intent(in) | point | ||
) |
The function 'dist2side_latlon' is the version of 'dist2side' that takes points in latitude-longitude coordinates.
Definition at line 2836 of file fv_grid_utils.F90.
|
private |
The subroutine 'edge_factors' initializes interpolation factors at face edges for interpolation from A to B grid.
Definition at line 1232 of file fv_grid_utils.F90.
|
private |
The subroutine 'efactor_a2c_v' initializes interpolation factors at face edges for interpolating vectors from A to C grid.
Definition at line 1055 of file fv_grid_utils.F90.
|
private |
The subroutine 'elgs' performs the partial-pivoting gaussian elimination.
a(n,n) is the original matrix in the input and transformed matrix plus the pivoting element ratios below the diagonal in the output.
Definition at line 3284 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::expand_cell | ( | real(kind=r_grid), dimension(2), intent(in) | q1, |
real(kind=r_grid), dimension(2), intent(in) | q2, | ||
real(kind=r_grid), dimension(2), intent(in) | q3, | ||
real(kind=r_grid), dimension(2), intent(in) | q4, | ||
real(kind=r_grid), dimension(2), intent(out) | a1, | ||
real(kind=r_grid), dimension(2), intent(out) | a2, | ||
real(kind=r_grid), dimension(2), intent(out) | a3, | ||
real(kind=r_grid), dimension(2), intent(out) | a4, | ||
real(kind=r_grid), intent(in) | fac | ||
) |
Definition at line 2657 of file fv_grid_utils.F90.
|
private |
Definition at line 3090 of file fv_grid_utils.F90.
|
private |
Definition at line 3130 of file fv_grid_utils.F90.
real function, public fv_grid_utils_mod::g_sum | ( | type(domain2d), intent(in) | domain, |
real, dimension(ifirst:ilast,jfirst:jlast), intent(in) | p, | ||
integer, intent(in) | ifirst, | ||
integer, intent(in) | ilast, | ||
integer, intent(in) | jfirst, | ||
integer, intent(in) | jlast, | ||
integer, intent(in) | ngc, | ||
real(kind=r_grid), dimension(ifirst-ngc:ilast+ngc,jfirst-ngc:jlast+ngc), intent(in) | area, | ||
integer, intent(in) | mode, | ||
logical, intent(in), optional | reproduce | ||
) |
The function 'g_sum' is the fast version of 'globalsum'.
Definition at line 2968 of file fv_grid_utils.F90.
real(kind=r_grid) function, public fv_grid_utils_mod::get_area | ( | real(kind=r_grid), dimension(2), intent(in) | p1, |
real(kind=r_grid), dimension(2), intent(in) | p4, | ||
real(kind=r_grid), dimension(2), intent(in) | p2, | ||
real(kind=r_grid), dimension(2), intent(in) | p3, | ||
real(kind=r_grid), intent(in), optional | radius | ||
) |
Definition at line 2774 of file fv_grid_utils.F90.
|
private |
Definition at line 1834 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::get_latlon_vector | ( | real(kind=r_grid), dimension(2), intent(in) | pp, |
real(kind=r_grid), dimension(3), intent(out) | elon, | ||
real(kind=r_grid), dimension(3), intent(out) | elat | ||
) |
Definition at line 3341 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::get_unit_vect2 | ( | real(kind=r_grid), dimension(2), intent(in) | e1, |
real(kind=r_grid), dimension(2), intent(in) | e2, | ||
real(kind=r_grid), dimension(3), intent(out) | uc | ||
) |
[out] | uc | unit vector e1—>e2 |
Definition at line 1887 of file fv_grid_utils.F90.
|
private |
Definition at line 1904 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::global_mx | ( | real(kind=r_grid), dimension(bd%is-n_g:bd%ie+n_g, bd%js-n_g:bd%je+n_g), intent(in) | q, |
integer, intent(in) | n_g, | ||
real(kind=r_grid), intent(out) | qmin, | ||
real(kind=r_grid), intent(out) | qmax, | ||
type(fv_grid_bounds_type), intent(in) | bd | ||
) |
Definition at line 3040 of file fv_grid_utils.F90.
|
private |
The subroutine 'global_mx_c' computes the global max and min at the cell corners.
Definition at line 3069 of file fv_grid_utils.F90.
real function, public fv_grid_utils_mod::global_qsum | ( | real, dimension(ifirst:ilast,jfirst:jlast), intent(in) | p, |
integer, intent(in) | ifirst, | ||
integer, intent(in) | ilast, | ||
integer, intent(in) | jfirst, | ||
integer, intent(in) | jlast | ||
) |
The function 'global_qsum' computes the quick global sum without area weighting.
[in] | p | field to be summed |
Definition at line 3020 of file fv_grid_utils.F90.
|
private |
Definition at line 1580 of file fv_grid_utils.F90.
|
private |
Definition at line 1607 of file fv_grid_utils.F90.
|
private |
The subroutine 'gnomonic_ed' computes the equal distances along the 4 edges of the cubed sphere.
Properties: defined by intersections of great circles max(dx,dy; global) / min(dx,dy; global) = sqrt(2) = 1.4142 Max(aspect ratio) = 1.06089 the N-S coordinate curves are const longitude on the 4 faces with equator For C2000: (dx_min, dx_max) = (3.921, 5.545) in km unit This is the grid of choice for global cloud resolving
Definition at line 1375 of file fv_grid_utils.F90.
|
private |
The subroutine 'gnomonic_ed_limited' creates a limited-area equidistant gnomonic grid with corners given by lL (lower-left), lR (lower-right), uL (upper-left),and uR (upper-right) with im by in cells.
'lamda' and 'theta' are the latitude-longitude coordinates of the corners of the cells. This formulation assumes the coordinates given are on the 'prototypical equatorial panel' given by gnomonic_ed. The resulting gnomonic limited area grid can then be translated and/or scaled to its appropriate location on another panel if desired.
Definition at line 1471 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::gnomonic_grids | ( | integer, intent(in) | grid_type, |
integer, intent(in) | im, | ||
real(kind=r_grid), dimension(im+1,im+1), intent(out) | lon, | ||
real(kind=r_grid), dimension(im+1,im+1), intent(out) | lat | ||
) |
Definition at line 1340 of file fv_grid_utils.F90.
real function, public fv_grid_utils_mod::great_circle_dist | ( | real(kind=r_grid), dimension(2), intent(in) | q1, |
real(kind=r_grid), dimension(2), intent(in) | q2, | ||
real(kind=r_grid), intent(in), optional | radius | ||
) |
Definition at line 2079 of file fv_grid_utils.F90.
|
private |
The function 'great_circle_dist_cart' calculates the normalized great circle distance between 'v1' and 'v2'.
Definition at line 2107 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::grid_utils_end | ( | ) |
Definition at line 907 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::grid_utils_init | ( | type(fv_atmos_type), intent(inout), target | Atm, |
integer, intent(in) | npx, | ||
integer, intent(in) | npy, | ||
integer, intent(in) | npz, | ||
logical, intent(in) | non_ortho, | ||
integer, intent(in) | grid_type, | ||
integer, intent(in) | c2l_order | ||
) |
[in,out] | atm | Initialize 2D memory and geometrical factors |
Definition at line 135 of file fv_grid_utils.F90.
|
private |
Definition at line 2347 of file fv_grid_utils.F90.
|
private |
Definition at line 3714 of file fv_grid_utils.F90.
real function, public fv_grid_utils_mod::inner_prod | ( | real(kind=r_grid), dimension(3), intent(in) | v1, |
real(kind=r_grid), dimension(3), intent(in) | v2 | ||
) |
Definition at line 1039 of file fv_grid_utils.F90.
|
private |
The subroutine 'intersect' calculates the intersection of two great circles.
input: a1, a2, - pairs of points on sphere in cartesian coordinates b1, b2 defining great circles radius - radius of the sphere output: x_inter - nearest intersection point of the great circles local_a - true if x1 between (a1, a2) local_b - true if x1 between (b1, b2)
Definition at line 2142 of file fv_grid_utils.F90.
|
private |
The subroutine 'intersect_cross' calculates the intersection of two great circles.
input: a1, a2, - pairs of points on sphere in cartesian coordinates b1, b2 defining great circles radius - radius of the sphere
output: x_inter - nearest intersection point of the great circles local_a - true if x1 between (a1, a2) local_b - true if x1 between (b1, b2)
A great circle is the intersection of a plane through the center of the sphere with the sphere. That plane is specified by a vector v1, which is the cross product of any two vectors lying in the plane; here, we use position vectors, which are unit vectors lying in the plane and rooted at the center of the sphere. The intersection of two great circles is where the the intersection of the planes, a line, itself intersects the sphere. Since the planes are defined by perpendicular vectors v1, v2 respectively, the intersecting line is perpendicular to both v1 and v2, and so lies along the cross product of v1 and v2. The two intersection points of the great circles is therefore +/- v1 x v2.
Definition at line 2234 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::intp_great_circle | ( | real(kind=r_grid), intent(in) | beta, |
real(kind=r_grid), dimension(2), intent(in) | p1, | ||
real(kind=r_grid), dimension(2), intent(in) | p2, | ||
real(kind=r_grid), intent(out) | x_o, | ||
real(kind=r_grid), intent(out) | y_o | ||
) |
[in] | beta | [0,1] |
[out] | y_o | between p1 and p2 along GC |
Definition at line 1934 of file fv_grid_utils.F90.
|
private |
[out] | x | inverted maxtrix |
Definition at line 3240 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::latlon2xyz | ( | real(kind=r_grid), dimension(2), intent(in) | p, |
real(kind=r_grid), dimension(3), intent(out) | e, | ||
integer, intent(in), optional | id | ||
) |
The subroutine 'latlon2xyz' maps (lon, lat) to (x,y,z)
[in] | id | id=0 do nothing; id=1, right_hand |
Definition at line 1688 of file fv_grid_utils.F90.
|
private |
Definition at line 1677 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::make_eta_level | ( | integer, intent(in) | km, |
real, dimension(bd%is-1:bd%ie+1,km+1,bd%js-1:bd%je+1), intent(inout) | pe, | ||
real(kind=r_grid), dimension(bd%isd:bd%ied,bd%jsd:bd%jed), intent(in) | area, | ||
integer, intent(out) | kks, | ||
real, dimension(km+1), intent(out) | ak, | ||
real, dimension(km+1), intent(out) | bk, | ||
real, intent(inout) | ptop, | ||
type(domain2d), intent(in) | domain, | ||
type(fv_grid_bounds_type), intent(in) | bd | ||
) |
Definition at line 3171 of file fv_grid_utils.F90.
|
private |
Definition at line 2035 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::mid_pt_cart | ( | real(kind=r_grid), dimension(2), intent(in) | p1, |
real(kind=r_grid), dimension(2), intent(in) | p2, | ||
real(kind=r_grid), dimension(3), intent(out) | e3 | ||
) |
Definition at line 2065 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::mid_pt_sphere | ( | real(kind=r_grid), dimension(2), intent(in) | p1, |
real(kind=r_grid), dimension(2), intent(in) | p2, | ||
real(kind=r_grid), dimension(2), intent(out) | pm | ||
) |
Definition at line 2020 of file fv_grid_utils.F90.
|
private |
The subroutine 'mirror_latlon' computes the mirror image of (lon0, lat0) as (lon3, lat3) given the "mirror" as defined by (lon1, lat1), (lon2, lat2), and center of the sphere.
Definition at line 1752 of file fv_grid_utils.F90.
|
private |
The subroutine 'mirror_xyz' computes the mirror image of p0(x0, y0, z0) as p(x, y, z) given the "mirror" as defined by p1(x1, y1, z1), p2(x2, y2, z2), and the center of the sphere.
Definition at line 1717 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::normalize_vect | ( | real(kind=r_grid), dimension(3), intent(inout) | e | ) |
The subroutine 'normalize_vect' makes 'e' a unit vector.
Definition at line 1918 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::project_sphere_v | ( | integer, intent(in) | np, |
real(kind=r_grid), dimension(3,np), intent(inout) | f, | ||
real(kind=r_grid), dimension(3,np), intent(in) | e | ||
) |
[in] | np | total number of points |
[in] | e | input position unit vector |
Definition at line 3360 of file fv_grid_utils.F90.
real(kind=r_grid) function, public fv_grid_utils_mod::spherical_angle | ( | real(kind=r_grid), dimension(3) | p1, |
real(kind=r_grid), dimension(3) | p2, | ||
real(kind=r_grid), dimension(3) | p3 | ||
) |
Definition at line 2861 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::spherical_linear_interpolation | ( | real(kind=r_grid), intent(in) | beta, |
real(kind=r_grid), dimension(2), intent(in) | p1, | ||
real(kind=r_grid), dimension(2), intent(in) | p2, | ||
real(kind=r_grid), dimension(2), intent(out) | pb | ||
) |
The subroutine 'spherical_linear_interpolation' interpolates along the great circle connecting points p1 and p2.
The routine uses the formula taken from http://en.wikipedia.org/wiki/Slerp and is attributed to Glenn Davis based on a concept by Ken Shoemake.
[in] | beta | [0,1] |
[out] | pb | between p1 and p2 along GC |
Definition at line 1968 of file fv_grid_utils.F90.
|
private |
Definition at line 1636 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::unit_vect_latlon | ( | real(kind=r_grid), dimension(2), intent(in) | pp, |
real(kind=r_grid), dimension(3), intent(out) | elon, | ||
real(kind=r_grid), dimension(3), intent(out) | elat | ||
) |
Definition at line 2312 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::update2d_dwinds_phys | ( | integer, intent(in) | is, |
integer, intent(in) | ie, | ||
integer, intent(in) | js, | ||
integer, intent(in) | je, | ||
integer, intent(in) | isd, | ||
integer, intent(in) | ied, | ||
integer, intent(in) | jsd, | ||
integer, intent(in) | jed, | ||
real, intent(in) | dt, | ||
real, dimension(isd:ied,jsd:jed,npz), intent(inout) | u_dt, | ||
real, dimension(isd:ied,jsd:jed,npz), intent(inout) | v_dt, | ||
real, dimension(isd:ied, jsd:jed+1,npz), intent(inout) | u, | ||
real, dimension(isd:ied+1,jsd:jed ,npz), intent(inout) | v, | ||
type(fv_grid_type), intent(in), target | gridstruct, | ||
integer, intent(in) | npx, | ||
integer, intent(in) | npy, | ||
integer, intent(in) | npz, | ||
type(domain2d), intent(inout) | domain | ||
) |
The subroutine 'update2d_dwinds_phys' transforms the wind tendencies.
Definition at line 3569 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::update_dwinds_phys | ( | integer, intent(in) | is, |
integer, intent(in) | ie, | ||
integer, intent(in) | js, | ||
integer, intent(in) | je, | ||
integer, intent(in) | isd, | ||
integer, intent(in) | ied, | ||
integer, intent(in) | jsd, | ||
integer, intent(in) | jed, | ||
real, intent(in) | dt, | ||
real, dimension(isd:ied,jsd:jed,npz), intent(inout) | u_dt, | ||
real, dimension(isd:ied,jsd:jed,npz), intent(inout) | v_dt, | ||
real, dimension(isd:ied, jsd:jed+1,npz), intent(inout) | u, | ||
real, dimension(isd:ied+1,jsd:jed ,npz), intent(inout) | v, | ||
type(fv_grid_type), intent(in), target | gridstruct, | ||
integer, intent(in) | npx, | ||
integer, intent(in) | npy, | ||
integer, intent(in) | npz, | ||
type(domain2d), intent(inout) | domain | ||
) |
The subroutine 'update_dwinds_phys' transforms the wind tendencies from the A grid to the D grid for the final update.
Definition at line 3380 of file fv_grid_utils.F90.
real(kind=r_grid) function, public fv_grid_utils_mod::v_prod | ( | real(kind=r_grid), dimension(3) | v1, |
real(kind=r_grid), dimension(3) | v2 | ||
) |
Definition at line 2339 of file fv_grid_utils.F90.
subroutine, public fv_grid_utils_mod::vect_cross | ( | real(kind=r_grid), dimension(3), intent(out) | e, |
real(kind=r_grid), dimension(3), intent(in) | p1, | ||
real(kind=r_grid), dimension(3), intent(in) | p2 | ||
) |
The subroutine 'vect_cross performs cross products of 3D vectors: e = P1 X P2.
Definition at line 1824 of file fv_grid_utils.F90.
real, parameter, public fv_grid_utils_mod::big_number =1.d8 |
Definition at line 104 of file fv_grid_utils.F90.
integer, parameter, public fv_grid_utils_mod::f_p = selected_real_kind(20) |
Definition at line 102 of file fv_grid_utils.F90.
real, parameter, public fv_grid_utils_mod::ptop_min =1.d-8 |
Definition at line 109 of file fv_grid_utils.F90.
|
private |
Definition at line 107 of file fv_grid_utils.F90.
logical, public fv_grid_utils_mod::symm_grid |
Definition at line 96 of file fv_grid_utils.F90.
|
private |
Definition at line 105 of file fv_grid_utils.F90.