1 /***********************************************************************
4 * this file is part of the gfdl flexible modeling system(fms).
6 * licensed under the apache license, version 2.0 (the
"License");
7 * you may not
use this file except in compliance with the license.
8 * you may obtain a copy of the license at
10 * http://www.apache.org/licenses/license-2.0
12 * fms is distributed in the hope that it will be useful, but without
13 * warranties or conditions of any kind, either express or implied;
14 * without even the implied warranty of merchantability or fitness for a
15 * particular purpose. see the license for the specific language
16 * governing permissions and limitations under the license.
17 ***********************************************************************/
18 #ifndef HORIZ_INTERP_CREATE_XGRID_H_
19 #define HORIZ_INTERP_CREATE_XGRID_H_
25 #define AREA_RATIO_THRESH (1.e-6)
26 #define MASK_THRESH (0.5)
29 int create_xgrid_1dx2d_order1(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out, const double *lon_in,
30 const double *lat_in, const double *lon_out, const double *lat_out,
31 const double *mask_in, int *i_in, int *j_in, int *i_out,
32 int *j_out, double *xgrid_area);
34 int create_xgrid_1dx2d_order1_(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
35 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
36 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out, double *xgrid_area);
38 int create_xgrid_1dx2d_order2(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
39 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
40 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
41 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
43 int create_xgrid_1dx2d_order2_(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
44 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
45 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
46 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
48 int create_xgrid_2dx1d_order1(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out, const double *lon_in,
49 const double *lat_in, const double *lon_out, const double *lat_out,
50 const double *mask_in, int *i_in, int *j_in, int *i_out,
51 int *j_out, double *xgrid_area);
53 int create_xgrid_2dx1d_order1_(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
54 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
55 const double *mask_in, int *i_in, int *j_in, int *i_out,
56 int *j_out, double *xgrid_area);
58 int create_xgrid_2dx1d_order2(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
59 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
60 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
61 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
63 int create_xgrid_2dx1d_order2_(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
64 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
65 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
66 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
68 int create_xgrid_2dx2d_order1(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
69 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
70 const double *mask_in, int *i_in, int *j_in, int *i_out,
71 int *j_out, double *xgrid_area);
73 int create_xgrid_2dx2d_order2(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
74 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
75 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
76 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
78 int create_xgrid_great_circle(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
79 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
80 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
81 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
83 int create_xgrid_1dx2d_order1_ug(const int *nlon_in, const int *nlat_in, const int *npts_out, const double *lon_in,
84 const double *lat_in, const double *lon_out, const double *lat_out,
85 const double *mask_in, int *i_in, int *j_in, int *l_out, double *xgrid_area);
87 int create_xgrid_great_circle_ug(const int *nlon_in, const int *nlat_in, const int *npts_out,
88 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
89 const double *mask_in, int *i_in, int *j_in, int *l_out,
90 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
92 int create_xgrid_2dx2d_order1_(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
93 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
94 const double *mask_in, int *i_in, int *j_in, int *i_out,
95 int *j_out, double *xgrid_area);
97 int create_xgrid_2dx2d_order2_(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
98 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
99 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
100 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
102 int create_xgrid_1dx2d_order1_ug_(const int *nlon_in, const int *nlat_in, const int *npts_out, const double *lon_in,
103 const double *lat_in, const double *lon_out, const double *lat_out,
104 const double *mask_in, int *i_in, int *j_in, int *l_out, double *xgrid_area);
106 int create_xgrid_great_circle_ug_(const int *nlon_in, const int *nlat_in, const int *npts_out,
107 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
108 const double *mask_in, int *i_in, int *j_in, int *l_out,
109 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
111 int get_maxxgrid(void);
112 int get_maxxgrid_(void);