1/***********************************************************************
2 * gnu lesser general
Public license
4 * this file is part of the gfdl flexible modeling system(fms).
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.
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
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_
26#define AREA_RATIO_THRESH (1.e-6)
27#define MASK_THRESH (0.5)
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
112int get_maxxgrid(void);
113int get_maxxgrid_(void);