FMS 2025.01-dev
Flexible Modeling System
Loading...
Searching...
No Matches
horiz_interp_conserve_xgrid.h
1/***********************************************************************
2 * gnu lesser general Public license
3 *
4 * this file is part of the gfdl flexible modeling system(fms).
5 *
6 * fms is free software: you can redistribute it and/or modify it under
7 * the terms of the gnu lesser general Public license as published by
8 * the free software foundation, either version 3 of the license, or(at
9 * your option) any later version.
10 *
11 * fms is distributed in the hope that it will be useful, but without
12 * any warranty; without even the implied warranty of merchantability or
13 * fitness for a particular purpose. see the gnu general Public license
14 * for more details.
15 *
16 * you should have received a copy of the gnu lesser general Public
17 * license along with fms. If not, see <http://www.gnu.org/licenses/>.
18 **********************************************************************/
19#ifndef HORIZ_INTERP_CREATE_XGRID_H_
20#define HORIZ_INTERP_CREATE_XGRID_H_
21
22#ifndef MAXXGRID
23#define MAXXGRID 1e6
24#endif
25
26#define AREA_RATIO_THRESH (1.e-6)
27#define MASK_THRESH (0.5)
28#define MAX_V 8
29
30int create_xgrid_1dx2d_order1(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out, const double *lon_in,
31 const double *lat_in, const double *lon_out, const double *lat_out,
32 const double *mask_in, int *i_in, int *j_in, int *i_out,
33 int *j_out, double *xgrid_area);
34
35int create_xgrid_1dx2d_order1_(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
36 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
37 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out, double *xgrid_area);
38
39int create_xgrid_1dx2d_order2(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
40 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
41 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
42 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
43
44int create_xgrid_1dx2d_order2_(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
45 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
46 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
47 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
48
49int create_xgrid_2dx1d_order1(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out, const double *lon_in,
50 const double *lat_in, const double *lon_out, const double *lat_out,
51 const double *mask_in, int *i_in, int *j_in, int *i_out,
52 int *j_out, double *xgrid_area);
53
54int create_xgrid_2dx1d_order1_(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
55 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
56 const double *mask_in, int *i_in, int *j_in, int *i_out,
57 int *j_out, double *xgrid_area);
58
59int create_xgrid_2dx1d_order2(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
60 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
61 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
62 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
63
64int create_xgrid_2dx1d_order2_(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
65 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
66 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
67 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
68
69int create_xgrid_2dx2d_order1(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
70 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
71 const double *mask_in, int *i_in, int *j_in, int *i_out,
72 int *j_out, double *xgrid_area);
73
74int create_xgrid_2dx2d_order2(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
75 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
76 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
77 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
78
79int create_xgrid_great_circle(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
80 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
81 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
82 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
83
84int create_xgrid_1dx2d_order1_ug(const int *nlon_in, const int *nlat_in, const int *npts_out, const double *lon_in,
85 const double *lat_in, const double *lon_out, const double *lat_out,
86 const double *mask_in, int *i_in, int *j_in, int *l_out, double *xgrid_area);
87
88int create_xgrid_great_circle_ug(const int *nlon_in, const int *nlat_in, const int *npts_out,
89 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
90 const double *mask_in, int *i_in, int *j_in, int *l_out,
91 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
92
93int create_xgrid_2dx2d_order1_(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
94 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
95 const double *mask_in, int *i_in, int *j_in, int *i_out,
96 int *j_out, double *xgrid_area);
97
98int create_xgrid_2dx2d_order2_(const int *nlon_in, const int *nlat_in, const int *nlon_out, const int *nlat_out,
99 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
100 const double *mask_in, int *i_in, int *j_in, int *i_out, int *j_out,
101 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
102
103int create_xgrid_1dx2d_order1_ug_(const int *nlon_in, const int *nlat_in, const int *npts_out, const double *lon_in,
104 const double *lat_in, const double *lon_out, const double *lat_out,
105 const double *mask_in, int *i_in, int *j_in, int *l_out, double *xgrid_area);
106
107int create_xgrid_great_circle_ug_(const int *nlon_in, const int *nlat_in, const int *npts_out,
108 const double *lon_in, const double *lat_in, const double *lon_out, const double *lat_out,
109 const double *mask_in, int *i_in, int *j_in, int *l_out,
110 double *xgrid_area, double *xgrid_clon, double *xgrid_clat);
111
112int get_maxxgrid(void);
113int get_maxxgrid_(void);
114
115#endif