FMS  2025.04
Flexible Modeling System
horiz_interp_conserve_xgrid.h
1 /***********************************************************************
2  * apache license 2.0
3  *
4  * this file is part of the gfdl flexible modeling system(fms).
5  *
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
9  *
10  * http://www.apache.org/licenses/license-2.0
11  *
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_
20 
21 #ifndef MAXXGRID
22 #define MAXXGRID 1e6
23 #endif
24 
25 #define AREA_RATIO_THRESH (1.e-6)
26 #define MASK_THRESH (0.5)
27 #define MAX_V 8
28 
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);
33 
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);
37 
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);
42 
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);
47 
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);
52 
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);
57 
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);
62 
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);
67 
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);
72 
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);
77 
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);
82 
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);
86 
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);
91 
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);
96 
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);
101 
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);
105 
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);
110 
111 int get_maxxgrid(void);
112 int get_maxxgrid_(void);
113 
114 #endif