38module horiz_interp_mod
46use fms_mod,
only: write_version_number, fms_error_handler
47use fms_mod,
only: check_nml_error
49use mpp_mod,
only: input_nml_file, warning, mpp_pe, mpp_root_pe
50use constants_mod,
only: pi
52use horiz_interp_type_mod,
only: conserve, bilinear, spherical, bicubic
62use platform_mod,
only: r4_kind, r8_kind
128 module procedure horiz_interp_new_1d_r4
129 module procedure horiz_interp_new_1d_r8
131 module procedure horiz_interp_new_1d_src_r4
132 module procedure horiz_interp_new_1d_src_r8
134 module procedure horiz_interp_new_2d_r4
135 module procedure horiz_interp_new_2d_r8
137 module procedure horiz_interp_new_1d_dst_r4
138 module procedure horiz_interp_new_1d_dst_r8
144 module procedure horiz_interp_read_weights_r4
145 module procedure horiz_interp_read_weights_r8
205 module procedure horiz_interp_base_2d_r4
206 module procedure horiz_interp_base_2d_r8
207 module procedure horiz_interp_base_3d_r4
208 module procedure horiz_interp_base_3d_r8
209 module procedure horiz_interp_solo_1d_r4
210 module procedure horiz_interp_solo_1d_r8
211 module procedure horiz_interp_solo_1d_src_r4
212 module procedure horiz_interp_solo_1d_src_r8
213 module procedure horiz_interp_solo_2d_r4
214 module procedure horiz_interp_solo_2d_r8
215 module procedure horiz_interp_solo_1d_dst_r4
216 module procedure horiz_interp_solo_1d_dst_r8
217 module procedure horiz_interp_solo_old_r4
218 module procedure horiz_interp_solo_old_r8
223 module procedure is_lat_lon_r4
224 module procedure is_lat_lon_r8
228 module procedure horiz_interp_solo_1d_r4
229 module procedure horiz_interp_solo_1d_r8
246#include<file_version.h>
247 logical :: module_is_initialized = .false.
256 integer :: iunit, ierr, io
258 if(module_is_initialized)
return
259 call write_version_number(
"HORIZ_INTERP_MOD", version)
261 read (input_nml_file, horiz_interp_nml, iostat=io)
262 ierr = check_nml_error(io,
'horiz_interp_nml')
263 if (mpp_pe() == mpp_root_pe() )
then
265 write (iunit, nml=horiz_interp_nml)
269 call mpp_error(fatal,
"horiz_interp_mod: You have overridden the default value of " // &
270 "reproduce_siena and set it to .true. in horiz_interp_nml. This was a temporary workaround to " // &
271 "allow for consistency in continuing experiments and is no longer supported. " // &
272 "Please remove this namelist.")
280 module_is_initialized = .true.
297 select case(interp % interp_method)
308 interp%I_am_initialized = .false.
320#include "horiz_interp_r4.fh"
321#include "horiz_interp_r8.fh"
323end module horiz_interp_mod
subroutine, public horiz_interp_bicubic_init
Initializes module and writes version number to logfile.out.
subroutine, public horiz_interp_bicubic_del(interp)
Free memory from a horiz_interp_type used for bicubic interpolation (allocated via horiz_bicubic_new)
Creates a new horiz_interp_type for bicubic interpolation. Allocates space and initializes a derived-...
subroutine, public horiz_interp_bilinear_del(interp)
Deallocates memory used by "horiz_interp_type" variables.
subroutine, public horiz_interp_bilinear_init
Initialize this module and writes version number to logfile.
Creates a horiz_interp_type for bilinear interpolation.
Subroutines for reading in weight files and using that to fill in the horiz_interp type instead calcu...
subroutine, public horiz_interp_conserve_del(interp)
Deallocates memory used by "HI_KIND_TYPE" variables. Must be called before reinitializing with horiz_...
subroutine, public horiz_interp_conserve_init
Writes version number to logfile.
Allocates space and initializes a derived-type variable that contains pre-computed interpolation indi...
subroutine, public horiz_interp_end
Dummy routine.
subroutine, public horiz_interp_init
Initialize module and writes version number to logfile.out.
logical reproduce_siena
Set reproduce_siena = .true. to reproduce siena results. Set reproduce_siena = .false....
subroutine, public horiz_interp_del(interp)
Deallocates memory used by "horiz_interp_type" variables. Must be called before reinitializing with h...
Subroutine for performing the horizontal interpolation between two grids.
subroutine, public horiz_interp_spherical_del(interp)
Deallocates memory used by "HI_KIND_TYPE" variables. Must be called before reinitializing with horiz_...
subroutine, public horiz_interp_spherical_init
Initializes module and writes version number to logfile.out.
Holds data pointers and metadata for horizontal interpolations, passed between the horiz_interp modul...
Reduction operations. Find the min of scalar a from the PEs in pelist result is also automatically br...
Perform bicubic horizontal interpolation.
Allocates space and initializes a derived-type variable that contains pre-computed interpolation indi...
Subroutines for reading in weight files and using that to fill in the horiz_interp type instead calcu...