FMS  2026.01.01-dev
Flexible Modeling System
fms_io_utils_mod

Misc. utility routines for use in FMS2 IO. More...

Data Types

interface  allocate_array
 Interface to allocate data real, integer, or character buffers for use in read/write routines. Not meant to be used externally. More...
 
type  char_linked_list
 A linked list of strings. More...
 
interface  get_array_section
 Utility routine that copies a subset of data from a larger array into a smaller one using the starting indices and sizes provided. Example usage: More...
 
interface  get_data_type_string
 Sets a string describing the datatype corresponding to the sdata argument Example: More...
 
interface  get_mosaic_tile_file
 Constructs the file name to be used when utilizing a multi-tile mosaic. This is currenly used in the diag_manager and data_override in so that any output files will include the tile number of the writer. Uses the format "filename.tileN.nc" and requires the filename to already include the .nc suffix. More...
 
interface  parse_mask_table
 Reads in the mask_table file in the ASCII format from a given path and populates a maskmap array that used for domain decomposition. More...
 
interface  put_array_section
 Utility routine that copies a smaller array into a larger one using the starting indices and sizes provided. Example usage: More...
 

Functions/Subroutines

subroutine allocate_array_char_1d (buf, sizes, initialize)
 Allocate character arrays using an input array of sizes. More...
 
subroutine allocate_array_char_2d (buf, sizes, initialize)
 Allocate character arrays using an input array of sizes. More...
 
subroutine allocate_array_char_3d (buf, sizes, initialize)
 Allocate character arrays using an input array of sizes. More...
 
subroutine allocate_array_char_4d (buf, sizes, initialize)
 Allocate character arrays using an input array of sizes. More...
 
subroutine allocate_array_char_5d (buf, sizes, initialize)
 Allocate character arrays using an input array of sizes. More...
 
subroutine allocate_array_char_6d (buf, sizes, initialize)
 Allocate character arrays using an input array of sizes. More...
 
subroutine allocate_array_i4_kind_1d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_i4_kind_2d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_i4_kind_3d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_i4_kind_4d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_i4_kind_5d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_i8_kind_1d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_i8_kind_2d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_i8_kind_3d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_i8_kind_4d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_i8_kind_5d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_r4_kind_1d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_r4_kind_2d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_r4_kind_3d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_r4_kind_4d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_r4_kind_5d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_r8_kind_1d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_r8_kind_2d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_r8_kind_3d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_r8_kind_4d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine allocate_array_r8_kind_5d (buf, sizes)
 Allocate arrays using an input array of sizes. More...
 
subroutine, public append_to_list (list, string)
 Add node to character linked list. More...
 
subroutine, public ascii_read (ascii_filename, ascii_var, num_lines, max_length)
 Read the ascii text from filename ascii_filenameinto string array ascii_var More...
 
subroutine, public destroy_list (list)
 Deallocate all nodes on a character linked list. More...
 
subroutine, public domain_tile_filepath_mangle (dest, source, domain_tile_id)
 Add the domain tile id to an input filepath. More...
 
subroutine, public error (mesg)
 Print a message to stderr, then stop the program. More...
 
logical function, public file_exists (path)
 Determine if a file exists. More...
 
subroutine get_array_section_i4_kind_1d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_i4_kind_2d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_i4_kind_3d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_i4_kind_4d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_i4_kind_5d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_i8_kind_1d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_i8_kind_2d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_i8_kind_3d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_i8_kind_4d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_i8_kind_5d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_r4_kind_1d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_r4_kind_2d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_r4_kind_3d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_r4_kind_4d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_r4_kind_5d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_r8_kind_1d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_r8_kind_2d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_r8_kind_3d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_r8_kind_4d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_array_section_r8_kind_5d (section, array, s, c)
 Get a section of larger array. More...
 
subroutine get_data_type_string_0d (sdata, type_string)
 Return a string describing the input data's type.
 
subroutine get_data_type_string_1d (sdata, type_string)
 Return a string describing the input data's type.
 
subroutine get_data_type_string_2d (sdata, type_string)
 Return a string describing the input data's type.
 
subroutine get_data_type_string_3d (sdata, type_string)
 Return a string describing the input data's type.
 
subroutine get_data_type_string_4d (sdata, type_string)
 Return a string describing the input data's type.
 
subroutine get_data_type_string_5d (sdata, type_string)
 Return a string describing the input data's type.
 
subroutine, public get_filename_appendix (string_out)
 Writes filename appendix to "string_out". More...
 
subroutine, public get_instance_filename (name_in, name_out)
 Adds the filename_appendix to name_in and sets it as name_out. More...
 
subroutine get_mosaic_tile_file_sg (file_in, file_out, is_no_domain, domain, tile_count)
 Determine tile_file for structured grid based on filename and current tile on mpp_domain (this is mostly used for ongrid data_overrides) More...
 
subroutine get_mosaic_tile_file_ug (file_in, file_out, domain)
 Determine tile_file for unstructured grid based on filename and current tile on mpp_domain (this is mostly used for ongrid data_overrides) More...
 
logical function has_domain_tile_string (string)
 Determine if the "domain tile string" (.tilex.) exists in the input filename. More...
 
logical function has_io_domain_tile_string (string)
 Determine if the "I/O domain tile string" (.nc.xxxx) exists in the input filename. More...
 
logical function has_restart_string (string)
 Determine if the "restart string" (.res.) exists in the input filename. More...
 
subroutine, public io_domain_tile_filepath_mangle (dest, source, io_domain_tile_id)
 Add the I/O domain tile id to an input filepath. More...
 
logical function, public is_in_list (list, string, ignore_case)
 Determine if a string exists in a character linked list. More...
 
subroutine, public nullify_filename_appendix ()
 Clears the filename_appendix module variable.
 
subroutine, public open_check (flag, fname)
 
subroutine, public openmp_thread_trap ()
 Catch OpenMP parallel machines.
 
subroutine parse_mask_table_2d (mask_table, maskmap, modelname)
 Populate 2D maskmap from mask_table given a model. More...
 
subroutine parse_mask_table_3d (mask_table, maskmap, modelname)
 Populate 3D maskmap from mask_table given a model. More...
 
subroutine put_array_section_i4_kind_1d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_i4_kind_2d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_i4_kind_3d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_i4_kind_4d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_i4_kind_5d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_i8_kind_1d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_i8_kind_2d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_i8_kind_3d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_i8_kind_4d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_i8_kind_5d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_r4_kind_1d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_r4_kind_2d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_r4_kind_3d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_r4_kind_4d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_r4_kind_5d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_r8_kind_1d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_r8_kind_2d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_r8_kind_3d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_r8_kind_4d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine put_array_section_r8_kind_5d (section, array, s, c)
 Put a section of an array into a larger array. More...
 
subroutine, public restart_filepath_mangle (dest, source)
 Add ".res" to an input file path.
 
subroutine, public set_filename_appendix (string_in)
 Save "string_in" as a module variable that will added to the filename of the restart files. More...
 
logical function, public string_compare (string1, string2, ignore_case)
 Compare strings. More...
 

Detailed Description

Misc. utility routines for use in FMS2 IO.


Data Type Documentation

◆ fms_io_utils_mod::allocate_array

interface fms_io_utils_mod::allocate_array

Interface to allocate data real, integer, or character buffers for use in read/write routines. Not meant to be used externally.

Definition at line 125 of file fms_io_utils.F90.

Private Member Functions

 allocate_array_char_1d
 
 allocate_array_char_2d
 
 allocate_array_char_3d
 
 allocate_array_char_4d
 
 allocate_array_char_5d
 
 allocate_array_char_6d
 
 allocate_array_i4_kind_1d
 
 allocate_array_i4_kind_2d
 
 allocate_array_i4_kind_3d
 
 allocate_array_i4_kind_4d
 
 allocate_array_i4_kind_5d
 
 allocate_array_i8_kind_1d
 
 allocate_array_i8_kind_2d
 
 allocate_array_i8_kind_3d
 
 allocate_array_i8_kind_4d
 
 allocate_array_i8_kind_5d
 
 allocate_array_r4_kind_1d
 
 allocate_array_r4_kind_2d
 
 allocate_array_r4_kind_3d
 
 allocate_array_r4_kind_4d
 
 allocate_array_r4_kind_5d
 
 allocate_array_r8_kind_1d
 
 allocate_array_r8_kind_2d
 
 allocate_array_r8_kind_3d
 
 allocate_array_r8_kind_4d
 
 allocate_array_r8_kind_5d
 

◆ fms_io_utils_mod::char_linked_list

type fms_io_utils_mod::char_linked_list

A linked list of strings.

Definition at line 70 of file fms_io_utils.F90.

Collaboration diagram for char_linked_list:
[legend]

Private Attributes

type(char_linked_list), pointer head => null()
 
character(len=128) string
 

◆ fms_io_utils_mod::get_array_section

interface fms_io_utils_mod::get_array_section

Utility routine that copies a subset of data from a larger array into a smaller one using the starting indices and sizes provided. Example usage:

call get_array_section( section, array, start, sizes )

Is equivalent to

section(:,:,...) = array (start(1):start(1)+sizes(1), start(2):start(2)+sizes(2), ... )

This interface supports integers and reals for both 4 and 8 kind, and up to 5 dimensions.

Definition at line 202 of file fms_io_utils.F90.

Private Member Functions

 get_array_section_i4_kind_1d
 
 get_array_section_i4_kind_2d
 
 get_array_section_i4_kind_3d
 
 get_array_section_i4_kind_4d
 
 get_array_section_i4_kind_5d
 
 get_array_section_i8_kind_1d
 
 get_array_section_i8_kind_2d
 
 get_array_section_i8_kind_3d
 
 get_array_section_i8_kind_4d
 
 get_array_section_i8_kind_5d
 
 get_array_section_r4_kind_1d
 
 get_array_section_r4_kind_2d
 
 get_array_section_r4_kind_3d
 
 get_array_section_r4_kind_4d
 
 get_array_section_r4_kind_5d
 
 get_array_section_r8_kind_1d
 
 get_array_section_r8_kind_2d
 
 get_array_section_r8_kind_3d
 
 get_array_section_r8_kind_4d
 
 get_array_section_r8_kind_5d
 

◆ fms_io_utils_mod::get_data_type_string

interface fms_io_utils_mod::get_data_type_string

Sets a string describing the datatype corresponding to the sdata argument Example:

call get_data_type_string(sdata, string)

String values and associated data types are:

  • "int" integers(kind=4)
  • "i8_kind" integers(kind=8)
  • "float" real(kind=4)
  • "double" real(kind=8)
  • "char" character(len=*)

Definition at line 238 of file fms_io_utils.F90.

Private Member Functions

 get_data_type_string_0d
 
 get_data_type_string_1d
 
 get_data_type_string_2d
 
 get_data_type_string_3d
 
 get_data_type_string_4d
 
 get_data_type_string_5d
 

◆ fms_io_utils_mod::get_mosaic_tile_file

interface fms_io_utils_mod::get_mosaic_tile_file

Constructs the file name to be used when utilizing a multi-tile mosaic. This is currenly used in the diag_manager and data_override in so that any output files will include the tile number of the writer. Uses the format "filename.tileN.nc" and requires the filename to already include the .nc suffix.

Definition at line 117 of file fms_io_utils.F90.

Private Member Functions

subroutine get_mosaic_tile_file_sg (file_in, file_out, is_no_domain, domain, tile_count)
 Determine tile_file for structured grid based on filename and current tile on mpp_domain (this is mostly used for ongrid data_overrides) More...
 
subroutine get_mosaic_tile_file_ug (file_in, file_out, domain)
 Determine tile_file for unstructured grid based on filename and current tile on mpp_domain (this is mostly used for ongrid data_overrides) More...
 

Member Function/Subroutine Documentation

◆ get_mosaic_tile_file_sg()

subroutine get_mosaic_tile_file_sg ( character(len=*), intent(in)  file_in,
character(len=*), intent(out)  file_out,
logical, intent(in)  is_no_domain,
type(domain2d), intent(in), optional, target  domain,
integer, intent(in), optional  tile_count 
)
private

Determine tile_file for structured grid based on filename and current tile on mpp_domain (this is mostly used for ongrid data_overrides)

Parameters
[in]file_inname of 'base' file
[out]file_outname of tile_file
[in]is_no_domainare we providing a domain
[in]domaindomain provided
[in]tile_counttile count

Definition at line 741 of file fms_io_utils.F90.

◆ get_mosaic_tile_file_ug()

subroutine get_mosaic_tile_file_ug ( character(len=*), intent(in)  file_in,
character(len=*), intent(out)  file_out,
type(domainug), intent(in), optional  domain 
)
private

Determine tile_file for unstructured grid based on filename and current tile on mpp_domain (this is mostly used for ongrid data_overrides)

Parameters
[in]file_inname of base file
[out]file_outname of tile file
[in]domaindomain provided

Definition at line 802 of file fms_io_utils.F90.

◆ fms_io_utils_mod::parse_mask_table

interface fms_io_utils_mod::parse_mask_table

Reads in the mask_table file in the ASCII format from a given path and populates a maskmap array that used for domain decomposition.

The maskmap array is a logical array with the same shape as the domain layout, with each index representing a specific pe within the decomposition. This array is intended to be used as input for the mpp_define_domain routines maskmap argument, to essentially exclude certain pe's from a domain decomposition.

Mask table format is as follows:

<number-of-ranks-to-mask> <domain-layout> <rank-to-mask> <any-additional-ranks-to-mask>

For example, for a domain layout of (2,2),

| (1,2) | (2,2) | | ----------— |

| (1,1) | (2,1) |

The below mask table masks out 2 pes: the top left corner (1,1) and the bottom right corner (4,4). To clarify, this means 2 pes would be required, rather than 4 if the domain decomposition was not masked.

2 2,2 1,1 2,2

This interface includes support for both 2D and 3D mask tables.

Definition at line 107 of file fms_io_utils.F90.

Private Member Functions

subroutine parse_mask_table_2d (mask_table, maskmap, modelname)
 Populate 2D maskmap from mask_table given a model. More...
 
subroutine parse_mask_table_3d (mask_table, maskmap, modelname)
 Populate 3D maskmap from mask_table given a model. More...
 

Member Function/Subroutine Documentation

◆ parse_mask_table_2d()

subroutine parse_mask_table_2d ( character(len=*), intent(in)  mask_table,
logical, dimension(:,:), intent(out)  maskmap,
character(len=*), intent(in)  modelname 
)
private

Populate 2D maskmap from mask_table given a model.

Parameters
[in]mask_tableMask table to be read in
[out]maskmap2D Mask output
[in]modelnameModel to which this applies

Definition at line 542 of file fms_io_utils.F90.

◆ parse_mask_table_3d()

subroutine parse_mask_table_3d ( character(len=*), intent(in)  mask_table,
logical, dimension(:,:,:), intent(out)  maskmap,
character(len=*), intent(in)  modelname 
)
private

Populate 3D maskmap from mask_table given a model.

Parameters
[in]mask_tableMask table to be read in
[out]maskmap2D Mask output
[in]modelnameModel to which this applies

Definition at line 638 of file fms_io_utils.F90.

◆ fms_io_utils_mod::put_array_section

interface fms_io_utils_mod::put_array_section

Utility routine that copies a smaller array into a larger one using the starting indices and sizes provided. Example usage:

call put_array_section( section, array, start, sizes )

Is equivalent to

array (start(1):start(1)+sizes(1), start(2):start(2)+sizes(2), ... ) = section(:,:,...)

This interface supports integers and reals for both 4 and 8 kind, and up to 5 dimensions.

Definition at line 166 of file fms_io_utils.F90.

Private Member Functions

 put_array_section_i4_kind_1d
 
 put_array_section_i4_kind_2d
 
 put_array_section_i4_kind_3d
 
 put_array_section_i4_kind_4d
 
 put_array_section_i4_kind_5d
 
 put_array_section_i8_kind_1d
 
 put_array_section_i8_kind_2d
 
 put_array_section_i8_kind_3d
 
 put_array_section_i8_kind_4d
 
 put_array_section_i8_kind_5d
 
 put_array_section_r4_kind_1d
 
 put_array_section_r4_kind_2d
 
 put_array_section_r4_kind_3d
 
 put_array_section_r4_kind_4d
 
 put_array_section_r4_kind_5d
 
 put_array_section_r8_kind_1d
 
 put_array_section_r8_kind_2d
 
 put_array_section_r8_kind_3d
 
 put_array_section_r8_kind_4d
 
 put_array_section_r8_kind_5d
 

Function/Subroutine Documentation

◆ allocate_array_char_1d()

subroutine allocate_array_char_1d ( character(len=*), dimension(:), intent(inout), allocatable  buf,
integer, dimension(1), intent(in)  sizes,
logical, intent(in), optional  initialize 
)

Allocate character arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.
[in]initializeOptional argument when true will initialize with a blank string.

Definition at line 25 of file array_utils_char.inc.

◆ allocate_array_char_2d()

subroutine allocate_array_char_2d ( character(len=*), dimension(:,:), intent(inout), allocatable  buf,
integer, dimension(2), intent(in)  sizes,
logical, intent(in), optional  initialize 
)

Allocate character arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.
[in]initializeOptional argument when true will initialize with a blank string.

Definition at line 54 of file array_utils_char.inc.

◆ allocate_array_char_3d()

subroutine allocate_array_char_3d ( character(len=*), dimension(:,:,:), intent(inout), allocatable  buf,
integer, dimension(3), intent(in)  sizes,
logical, intent(in), optional  initialize 
)

Allocate character arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.
[in]initializeOptional argument when true will initialize with a blank string.

Definition at line 85 of file array_utils_char.inc.

◆ allocate_array_char_4d()

subroutine allocate_array_char_4d ( character(len=*), dimension(:,:,:,:), intent(inout), allocatable  buf,
integer, dimension(4), intent(in)  sizes,
logical, intent(in), optional  initialize 
)

Allocate character arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.
[in]initializeOptional argument when true will initialize with a blank string.

Definition at line 118 of file array_utils_char.inc.

◆ allocate_array_char_5d()

subroutine allocate_array_char_5d ( character(len=*), dimension(:,:,:,:,:), intent(inout), allocatable  buf,
integer, dimension(5), intent(in)  sizes,
logical, intent(in), optional  initialize 
)

Allocate character arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.
[in]initializeOptional argument when true will initialize with a blank string.

Definition at line 152 of file array_utils_char.inc.

◆ allocate_array_char_6d()

subroutine allocate_array_char_6d ( character(len=*), dimension(:,:,:,:,:,:), intent(inout), allocatable  buf,
integer, dimension(6), intent(in)  sizes,
logical, intent(in), optional  initialize 
)

Allocate character arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.
[in]initializeOptional argument when true will initialize with a blank string.

Definition at line 188 of file array_utils_char.inc.

◆ allocate_array_i4_kind_1d()

subroutine allocate_array_i4_kind_1d ( integer(kind=i4_kind), dimension(:), intent(inout), allocatable  buf,
integer, dimension(1), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 25 of file array_utils.inc.

◆ allocate_array_i4_kind_2d()

subroutine allocate_array_i4_kind_2d ( integer(kind=i4_kind), dimension(:,:), intent(inout), allocatable  buf,
integer, dimension(2), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 62 of file array_utils.inc.

◆ allocate_array_i4_kind_3d()

subroutine allocate_array_i4_kind_3d ( integer(kind=i4_kind), dimension(:,:,:), intent(inout), allocatable  buf,
integer, dimension(3), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 99 of file array_utils.inc.

◆ allocate_array_i4_kind_4d()

subroutine allocate_array_i4_kind_4d ( integer(kind=i4_kind), dimension(:,:,:,:), intent(inout), allocatable  buf,
integer, dimension(4), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 136 of file array_utils.inc.

◆ allocate_array_i4_kind_5d()

subroutine allocate_array_i4_kind_5d ( integer(kind=i4_kind), dimension(:,:,:,:,:), intent(inout), allocatable  buf,
integer, dimension(5), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 173 of file array_utils.inc.

◆ allocate_array_i8_kind_1d()

subroutine allocate_array_i8_kind_1d ( integer(kind=i8_kind), dimension(:), intent(inout), allocatable  buf,
integer, dimension(1), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 210 of file array_utils.inc.

◆ allocate_array_i8_kind_2d()

subroutine allocate_array_i8_kind_2d ( integer(kind=i8_kind), dimension(:,:), intent(inout), allocatable  buf,
integer, dimension(2), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 247 of file array_utils.inc.

◆ allocate_array_i8_kind_3d()

subroutine allocate_array_i8_kind_3d ( integer(kind=i8_kind), dimension(:,:,:), intent(inout), allocatable  buf,
integer, dimension(3), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 284 of file array_utils.inc.

◆ allocate_array_i8_kind_4d()

subroutine allocate_array_i8_kind_4d ( integer(kind=i8_kind), dimension(:,:,:,:), intent(inout), allocatable  buf,
integer, dimension(4), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 321 of file array_utils.inc.

◆ allocate_array_i8_kind_5d()

subroutine allocate_array_i8_kind_5d ( integer(kind=i8_kind), dimension(:,:,:,:,:), intent(inout), allocatable  buf,
integer, dimension(5), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 358 of file array_utils.inc.

◆ allocate_array_r4_kind_1d()

subroutine allocate_array_r4_kind_1d ( real(kind=r4_kind), dimension(:), intent(inout), allocatable  buf,
integer, dimension(1), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 395 of file array_utils.inc.

◆ allocate_array_r4_kind_2d()

subroutine allocate_array_r4_kind_2d ( real(kind=r4_kind), dimension(:,:), intent(inout), allocatable  buf,
integer, dimension(2), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 432 of file array_utils.inc.

◆ allocate_array_r4_kind_3d()

subroutine allocate_array_r4_kind_3d ( real(kind=r4_kind), dimension(:,:,:), intent(inout), allocatable  buf,
integer, dimension(3), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 469 of file array_utils.inc.

◆ allocate_array_r4_kind_4d()

subroutine allocate_array_r4_kind_4d ( real(kind=r4_kind), dimension(:,:,:,:), intent(inout), allocatable  buf,
integer, dimension(4), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 506 of file array_utils.inc.

◆ allocate_array_r4_kind_5d()

subroutine allocate_array_r4_kind_5d ( real(kind=r4_kind), dimension(:,:,:,:,:), intent(inout), allocatable  buf,
integer, dimension(5), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 543 of file array_utils.inc.

◆ allocate_array_r8_kind_1d()

subroutine allocate_array_r8_kind_1d ( real(kind=r8_kind), dimension(:), intent(inout), allocatable  buf,
integer, dimension(1), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 580 of file array_utils.inc.

◆ allocate_array_r8_kind_2d()

subroutine allocate_array_r8_kind_2d ( real(kind=r8_kind), dimension(:,:), intent(inout), allocatable  buf,
integer, dimension(2), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 617 of file array_utils.inc.

◆ allocate_array_r8_kind_3d()

subroutine allocate_array_r8_kind_3d ( real(kind=r8_kind), dimension(:,:,:), intent(inout), allocatable  buf,
integer, dimension(3), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 654 of file array_utils.inc.

◆ allocate_array_r8_kind_4d()

subroutine allocate_array_r8_kind_4d ( real(kind=r8_kind), dimension(:,:,:,:), intent(inout), allocatable  buf,
integer, dimension(4), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 691 of file array_utils.inc.

◆ allocate_array_r8_kind_5d()

subroutine allocate_array_r8_kind_5d ( real(kind=r8_kind), dimension(:,:,:,:,:), intent(inout), allocatable  buf,
integer, dimension(5), intent(in)  sizes 
)

Allocate arrays using an input array of sizes.

Parameters
[in,out]bufArray that will be allocated.
[in]sizesArray of dimension sizes.

Definition at line 728 of file array_utils.inc.

◆ append_to_list()

subroutine, public fms_io_utils_mod::append_to_list ( type(char_linked_list), intent(inout), pointer  list,
character(len=*), intent(in)  string 
)

Add node to character linked list.

Parameters
[in,out]listLinked list.
[in]stringInput string.

Definition at line 337 of file fms_io_utils.F90.

◆ ascii_read()

subroutine, public fms_io_utils_mod::ascii_read ( character(len=*), intent(in)  ascii_filename,
character(len=:), dimension(:), intent(out), allocatable  ascii_var,
integer, intent(out), optional  num_lines,
integer, intent(out), optional  max_length 
)

Read the ascii text from filename ascii_filenameinto string array ascii_var

Parameters
[in]ascii_filenameThe file name to be read
[out]ascii_varThe string array
[out]num_linesOptional argument to return number of lines in file
[out]max_lengthOptional argument to return max_length of line in file

Definition at line 525 of file fms_io_utils.F90.

◆ destroy_list()

subroutine, public fms_io_utils_mod::destroy_list ( type(char_linked_list), intent(inout), pointer  list)

Deallocate all nodes on a character linked list.

Parameters
[in,out]listLinked list.

Definition at line 360 of file fms_io_utils.F90.

◆ domain_tile_filepath_mangle()

subroutine, public fms_io_utils_mod::domain_tile_filepath_mangle ( character(len=*), intent(inout)  dest,
character(len=*), intent(in)  source,
integer, intent(in)  domain_tile_id 
)

Add the domain tile id to an input filepath.

Parameters
[in,out]destOutput filepath.
[in]sourceInput filepath.
[in]domain_tile_idDomain tile id.

Definition at line 412 of file fms_io_utils.F90.

◆ error()

subroutine, public fms_io_utils_mod::error ( character(len=*), intent(in)  mesg)

Print a message to stderr, then stop the program.

Parameters
[in]mesgMessage that will be printed to stderr.

Definition at line 253 of file fms_io_utils.F90.

◆ file_exists()

logical function, public fms_io_utils_mod::file_exists ( character(len=*), intent(in)  path)

Determine if a file exists.

Returns
Flag telling if the file exists.
Parameters
[in]pathPath to file.

Definition at line 264 of file fms_io_utils.F90.

◆ get_array_section_i4_kind_1d()

subroutine get_array_section_i4_kind_1d ( integer(kind=i4_kind), dimension(:), intent(inout)  section,
integer(kind=i4_kind), dimension(:), intent(in)  array,
integer, dimension(1), intent(in)  s,
integer, dimension(1), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 50 of file array_utils.inc.

◆ get_array_section_i4_kind_2d()

subroutine get_array_section_i4_kind_2d ( integer(kind=i4_kind), dimension(:,:), intent(inout)  section,
integer(kind=i4_kind), dimension(:,:), intent(in)  array,
integer, dimension(2), intent(in)  s,
integer, dimension(2), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 87 of file array_utils.inc.

◆ get_array_section_i4_kind_3d()

subroutine get_array_section_i4_kind_3d ( integer(kind=i4_kind), dimension(:,:,:), intent(inout)  section,
integer(kind=i4_kind), dimension(:,:,:), intent(in)  array,
integer, dimension(3), intent(in)  s,
integer, dimension(3), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 124 of file array_utils.inc.

◆ get_array_section_i4_kind_4d()

subroutine get_array_section_i4_kind_4d ( integer(kind=i4_kind), dimension(:,:,:,:), intent(inout)  section,
integer(kind=i4_kind), dimension(:,:,:,:), intent(in)  array,
integer, dimension(4), intent(in)  s,
integer, dimension(4), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 161 of file array_utils.inc.

◆ get_array_section_i4_kind_5d()

subroutine get_array_section_i4_kind_5d ( integer(kind=i4_kind), dimension(:,:,:,:,:), intent(inout)  section,
integer(kind=i4_kind), dimension(:,:,:,:,:), intent(in)  array,
integer, dimension(5), intent(in)  s,
integer, dimension(5), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 198 of file array_utils.inc.

◆ get_array_section_i8_kind_1d()

subroutine get_array_section_i8_kind_1d ( integer(kind=i8_kind), dimension(:), intent(inout)  section,
integer(kind=i8_kind), dimension(:), intent(in)  array,
integer, dimension(1), intent(in)  s,
integer, dimension(1), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 235 of file array_utils.inc.

◆ get_array_section_i8_kind_2d()

subroutine get_array_section_i8_kind_2d ( integer(kind=i8_kind), dimension(:,:), intent(inout)  section,
integer(kind=i8_kind), dimension(:,:), intent(in)  array,
integer, dimension(2), intent(in)  s,
integer, dimension(2), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 272 of file array_utils.inc.

◆ get_array_section_i8_kind_3d()

subroutine get_array_section_i8_kind_3d ( integer(kind=i8_kind), dimension(:,:,:), intent(inout)  section,
integer(kind=i8_kind), dimension(:,:,:), intent(in)  array,
integer, dimension(3), intent(in)  s,
integer, dimension(3), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 309 of file array_utils.inc.

◆ get_array_section_i8_kind_4d()

subroutine get_array_section_i8_kind_4d ( integer(kind=i8_kind), dimension(:,:,:,:), intent(inout)  section,
integer(kind=i8_kind), dimension(:,:,:,:), intent(in)  array,
integer, dimension(4), intent(in)  s,
integer, dimension(4), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 346 of file array_utils.inc.

◆ get_array_section_i8_kind_5d()

subroutine get_array_section_i8_kind_5d ( integer(kind=i8_kind), dimension(:,:,:,:,:), intent(inout)  section,
integer(kind=i8_kind), dimension(:,:,:,:,:), intent(in)  array,
integer, dimension(5), intent(in)  s,
integer, dimension(5), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 383 of file array_utils.inc.

◆ get_array_section_r4_kind_1d()

subroutine get_array_section_r4_kind_1d ( real(kind=r4_kind), dimension(:), intent(inout)  section,
real(kind=r4_kind), dimension(:), intent(in)  array,
integer, dimension(1), intent(in)  s,
integer, dimension(1), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 420 of file array_utils.inc.

◆ get_array_section_r4_kind_2d()

subroutine get_array_section_r4_kind_2d ( real(kind=r4_kind), dimension(:,:), intent(inout)  section,
real(kind=r4_kind), dimension(:,:), intent(in)  array,
integer, dimension(2), intent(in)  s,
integer, dimension(2), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 457 of file array_utils.inc.

◆ get_array_section_r4_kind_3d()

subroutine get_array_section_r4_kind_3d ( real(kind=r4_kind), dimension(:,:,:), intent(inout)  section,
real(kind=r4_kind), dimension(:,:,:), intent(in)  array,
integer, dimension(3), intent(in)  s,
integer, dimension(3), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 494 of file array_utils.inc.

◆ get_array_section_r4_kind_4d()

subroutine get_array_section_r4_kind_4d ( real(kind=r4_kind), dimension(:,:,:,:), intent(inout)  section,
real(kind=r4_kind), dimension(:,:,:,:), intent(in)  array,
integer, dimension(4), intent(in)  s,
integer, dimension(4), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 531 of file array_utils.inc.

◆ get_array_section_r4_kind_5d()

subroutine get_array_section_r4_kind_5d ( real(kind=r4_kind), dimension(:,:,:,:,:), intent(inout)  section,
real(kind=r4_kind), dimension(:,:,:,:,:), intent(in)  array,
integer, dimension(5), intent(in)  s,
integer, dimension(5), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 568 of file array_utils.inc.

◆ get_array_section_r8_kind_1d()

subroutine get_array_section_r8_kind_1d ( real(kind=r8_kind), dimension(:), intent(inout)  section,
real(kind=r8_kind), dimension(:), intent(in)  array,
integer, dimension(1), intent(in)  s,
integer, dimension(1), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 605 of file array_utils.inc.

◆ get_array_section_r8_kind_2d()

subroutine get_array_section_r8_kind_2d ( real(kind=r8_kind), dimension(:,:), intent(inout)  section,
real(kind=r8_kind), dimension(:,:), intent(in)  array,
integer, dimension(2), intent(in)  s,
integer, dimension(2), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 642 of file array_utils.inc.

◆ get_array_section_r8_kind_3d()

subroutine get_array_section_r8_kind_3d ( real(kind=r8_kind), dimension(:,:,:), intent(inout)  section,
real(kind=r8_kind), dimension(:,:,:), intent(in)  array,
integer, dimension(3), intent(in)  s,
integer, dimension(3), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 679 of file array_utils.inc.

◆ get_array_section_r8_kind_4d()

subroutine get_array_section_r8_kind_4d ( real(kind=r8_kind), dimension(:,:,:,:), intent(inout)  section,
real(kind=r8_kind), dimension(:,:,:,:), intent(in)  array,
integer, dimension(4), intent(in)  s,
integer, dimension(4), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 716 of file array_utils.inc.

◆ get_array_section_r8_kind_5d()

subroutine get_array_section_r8_kind_5d ( real(kind=r8_kind), dimension(:,:,:,:,:), intent(inout)  section,
real(kind=r8_kind), dimension(:,:,:,:,:), intent(in)  array,
integer, dimension(5), intent(in)  s,
integer, dimension(5), intent(in)  c 
)

Get a section of larger array.

Parameters
[in,out]sectionSection to be extracted.
[in]arrayArray to extract the section from.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 753 of file array_utils.inc.

◆ get_filename_appendix()

subroutine, public fms_io_utils_mod::get_filename_appendix ( character(len=*), intent(out)  string_out)

Writes filename appendix to "string_out".

Parameters
[out]string_outString to write the filename_appendix to

Definition at line 842 of file fms_io_utils.F90.

◆ get_instance_filename()

subroutine, public fms_io_utils_mod::get_instance_filename ( character(len=*), intent(in)  name_in,
character(len=*), intent(inout)  name_out 
)

Adds the filename_appendix to name_in and sets it as name_out.

Parameters
[in]name_inBuffer to add the filename_appendix to
[in,out]name_outname_in with the filename_appendix

Definition at line 872 of file fms_io_utils.F90.

◆ get_mosaic_tile_file_sg()

subroutine fms_io_utils_mod::get_mosaic_tile_file_sg ( character(len=*), intent(in)  file_in,
character(len=*), intent(out)  file_out,
logical, intent(in)  is_no_domain,
type(domain2d), intent(in), optional, target  domain,
integer, intent(in), optional  tile_count 
)
private

Determine tile_file for structured grid based on filename and current tile on mpp_domain (this is mostly used for ongrid data_overrides)

Parameters
[in]file_inname of 'base' file
[out]file_outname of tile_file
[in]is_no_domainare we providing a domain
[in]domaindomain provided
[in]tile_counttile count

Definition at line 741 of file fms_io_utils.F90.

◆ get_mosaic_tile_file_ug()

subroutine fms_io_utils_mod::get_mosaic_tile_file_ug ( character(len=*), intent(in)  file_in,
character(len=*), intent(out)  file_out,
type(domainug), intent(in), optional  domain 
)
private

Determine tile_file for unstructured grid based on filename and current tile on mpp_domain (this is mostly used for ongrid data_overrides)

Parameters
[in]file_inname of base file
[out]file_outname of tile file
[in]domaindomain provided

Definition at line 802 of file fms_io_utils.F90.

◆ has_domain_tile_string()

logical function fms_io_utils_mod::has_domain_tile_string ( character(len=*), intent(in)  string)
private

Determine if the "domain tile string" (.tilex.) exists in the input filename.

Parameters
[in]stringInput string.

Definition at line 378 of file fms_io_utils.F90.

◆ has_io_domain_tile_string()

logical function fms_io_utils_mod::has_io_domain_tile_string ( character(len=*), intent(in)  string)
private

Determine if the "I/O domain tile string" (.nc.xxxx) exists in the input filename.

Parameters
[in]stringInput string.

Definition at line 434 of file fms_io_utils.F90.

◆ has_restart_string()

logical function fms_io_utils_mod::has_restart_string ( character(len=*), intent(in)  string)
private

Determine if the "restart string" (.res.) exists in the input filename.

Parameters
[in]stringInput string.

Definition at line 476 of file fms_io_utils.F90.

◆ io_domain_tile_filepath_mangle()

subroutine, public fms_io_utils_mod::io_domain_tile_filepath_mangle ( character(len=*), intent(inout)  dest,
character(len=*), intent(in)  source,
integer, intent(in)  io_domain_tile_id 
)

Add the I/O domain tile id to an input filepath.

Parameters
[in,out]destOutput filepath.
[in]sourceInput filepath.
[in]io_domain_tile_idI/O domain tile id.

Definition at line 460 of file fms_io_utils.F90.

◆ is_in_list()

logical function, public fms_io_utils_mod::is_in_list ( type(char_linked_list), intent(in), pointer  list,
character(len=*), intent(in)  string,
logical, intent(in), optional  ignore_case 
)

Determine if a string exists in a character linked list.

Returns
Flag telling if the string is found in the list.
Parameters
[in]listLinked list.
[in]stringInput string.
[in]ignore_caseFlag to ignore case.

Definition at line 313 of file fms_io_utils.F90.

◆ open_check()

subroutine, public fms_io_utils_mod::open_check ( logical, intent(in)  flag,
character(len=*), intent(in), optional  fname 
)
Parameters
[in]fnameThe file name

Definition at line 509 of file fms_io_utils.F90.

◆ parse_mask_table_2d()

subroutine fms_io_utils_mod::parse_mask_table_2d ( character(len=*), intent(in)  mask_table,
logical, dimension(:,:), intent(out)  maskmap,
character(len=*), intent(in)  modelname 
)
private

Populate 2D maskmap from mask_table given a model.

Parameters
[in]mask_tableMask table to be read in
[out]maskmap2D Mask output
[in]modelnameModel to which this applies

Definition at line 542 of file fms_io_utils.F90.

◆ parse_mask_table_3d()

subroutine fms_io_utils_mod::parse_mask_table_3d ( character(len=*), intent(in)  mask_table,
logical, dimension(:,:,:), intent(out)  maskmap,
character(len=*), intent(in)  modelname 
)
private

Populate 3D maskmap from mask_table given a model.

Parameters
[in]mask_tableMask table to be read in
[out]maskmap2D Mask output
[in]modelnameModel to which this applies

Definition at line 638 of file fms_io_utils.F90.

◆ put_array_section_i4_kind_1d()

subroutine put_array_section_i4_kind_1d ( integer(kind=i4_kind), dimension(:), intent(in)  section,
integer(kind=i4_kind), dimension(:), intent(inout)  array,
integer, dimension(1), intent(in)  s,
integer, dimension(1), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 38 of file array_utils.inc.

◆ put_array_section_i4_kind_2d()

subroutine put_array_section_i4_kind_2d ( integer(kind=i4_kind), dimension(:,:), intent(in)  section,
integer(kind=i4_kind), dimension(:,:), intent(inout)  array,
integer, dimension(2), intent(in)  s,
integer, dimension(2), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 75 of file array_utils.inc.

◆ put_array_section_i4_kind_3d()

subroutine put_array_section_i4_kind_3d ( integer(kind=i4_kind), dimension(:,:,:), intent(in)  section,
integer(kind=i4_kind), dimension(:,:,:), intent(inout)  array,
integer, dimension(3), intent(in)  s,
integer, dimension(3), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 112 of file array_utils.inc.

◆ put_array_section_i4_kind_4d()

subroutine put_array_section_i4_kind_4d ( integer(kind=i4_kind), dimension(:,:,:,:), intent(in)  section,
integer(kind=i4_kind), dimension(:,:,:,:), intent(inout)  array,
integer, dimension(4), intent(in)  s,
integer, dimension(4), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 149 of file array_utils.inc.

◆ put_array_section_i4_kind_5d()

subroutine put_array_section_i4_kind_5d ( integer(kind=i4_kind), dimension(:,:,:,:,:), intent(in)  section,
integer(kind=i4_kind), dimension(:,:,:,:,:), intent(inout)  array,
integer, dimension(5), intent(in)  s,
integer, dimension(5), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 186 of file array_utils.inc.

◆ put_array_section_i8_kind_1d()

subroutine put_array_section_i8_kind_1d ( integer(kind=i8_kind), dimension(:), intent(in)  section,
integer(kind=i8_kind), dimension(:), intent(inout)  array,
integer, dimension(1), intent(in)  s,
integer, dimension(1), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 223 of file array_utils.inc.

◆ put_array_section_i8_kind_2d()

subroutine put_array_section_i8_kind_2d ( integer(kind=i8_kind), dimension(:,:), intent(in)  section,
integer(kind=i8_kind), dimension(:,:), intent(inout)  array,
integer, dimension(2), intent(in)  s,
integer, dimension(2), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 260 of file array_utils.inc.

◆ put_array_section_i8_kind_3d()

subroutine put_array_section_i8_kind_3d ( integer(kind=i8_kind), dimension(:,:,:), intent(in)  section,
integer(kind=i8_kind), dimension(:,:,:), intent(inout)  array,
integer, dimension(3), intent(in)  s,
integer, dimension(3), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 297 of file array_utils.inc.

◆ put_array_section_i8_kind_4d()

subroutine put_array_section_i8_kind_4d ( integer(kind=i8_kind), dimension(:,:,:,:), intent(in)  section,
integer(kind=i8_kind), dimension(:,:,:,:), intent(inout)  array,
integer, dimension(4), intent(in)  s,
integer, dimension(4), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 334 of file array_utils.inc.

◆ put_array_section_i8_kind_5d()

subroutine put_array_section_i8_kind_5d ( integer(kind=i8_kind), dimension(:,:,:,:,:), intent(in)  section,
integer(kind=i8_kind), dimension(:,:,:,:,:), intent(inout)  array,
integer, dimension(5), intent(in)  s,
integer, dimension(5), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 371 of file array_utils.inc.

◆ put_array_section_r4_kind_1d()

subroutine put_array_section_r4_kind_1d ( real(kind=r4_kind), dimension(:), intent(in)  section,
real(kind=r4_kind), dimension(:), intent(inout)  array,
integer, dimension(1), intent(in)  s,
integer, dimension(1), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 408 of file array_utils.inc.

◆ put_array_section_r4_kind_2d()

subroutine put_array_section_r4_kind_2d ( real(kind=r4_kind), dimension(:,:), intent(in)  section,
real(kind=r4_kind), dimension(:,:), intent(inout)  array,
integer, dimension(2), intent(in)  s,
integer, dimension(2), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 445 of file array_utils.inc.

◆ put_array_section_r4_kind_3d()

subroutine put_array_section_r4_kind_3d ( real(kind=r4_kind), dimension(:,:,:), intent(in)  section,
real(kind=r4_kind), dimension(:,:,:), intent(inout)  array,
integer, dimension(3), intent(in)  s,
integer, dimension(3), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 482 of file array_utils.inc.

◆ put_array_section_r4_kind_4d()

subroutine put_array_section_r4_kind_4d ( real(kind=r4_kind), dimension(:,:,:,:), intent(in)  section,
real(kind=r4_kind), dimension(:,:,:,:), intent(inout)  array,
integer, dimension(4), intent(in)  s,
integer, dimension(4), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 519 of file array_utils.inc.

◆ put_array_section_r4_kind_5d()

subroutine put_array_section_r4_kind_5d ( real(kind=r4_kind), dimension(:,:,:,:,:), intent(in)  section,
real(kind=r4_kind), dimension(:,:,:,:,:), intent(inout)  array,
integer, dimension(5), intent(in)  s,
integer, dimension(5), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 556 of file array_utils.inc.

◆ put_array_section_r8_kind_1d()

subroutine put_array_section_r8_kind_1d ( real(kind=r8_kind), dimension(:), intent(in)  section,
real(kind=r8_kind), dimension(:), intent(inout)  array,
integer, dimension(1), intent(in)  s,
integer, dimension(1), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 593 of file array_utils.inc.

◆ put_array_section_r8_kind_2d()

subroutine put_array_section_r8_kind_2d ( real(kind=r8_kind), dimension(:,:), intent(in)  section,
real(kind=r8_kind), dimension(:,:), intent(inout)  array,
integer, dimension(2), intent(in)  s,
integer, dimension(2), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 630 of file array_utils.inc.

◆ put_array_section_r8_kind_3d()

subroutine put_array_section_r8_kind_3d ( real(kind=r8_kind), dimension(:,:,:), intent(in)  section,
real(kind=r8_kind), dimension(:,:,:), intent(inout)  array,
integer, dimension(3), intent(in)  s,
integer, dimension(3), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 667 of file array_utils.inc.

◆ put_array_section_r8_kind_4d()

subroutine put_array_section_r8_kind_4d ( real(kind=r8_kind), dimension(:,:,:,:), intent(in)  section,
real(kind=r8_kind), dimension(:,:,:,:), intent(inout)  array,
integer, dimension(4), intent(in)  s,
integer, dimension(4), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 704 of file array_utils.inc.

◆ put_array_section_r8_kind_5d()

subroutine put_array_section_r8_kind_5d ( real(kind=r8_kind), dimension(:,:,:,:,:), intent(in)  section,
real(kind=r8_kind), dimension(:,:,:,:,:), intent(inout)  array,
integer, dimension(5), intent(in)  s,
integer, dimension(5), intent(in)  c 
)

Put a section of an array into a larger array.

Parameters
[in]sectionSection to be inserted.
[in,out]arrayArray to insert the section in.
[in]sArray of starting indices.
[in]cArray of sizes.

Definition at line 741 of file array_utils.inc.

◆ set_filename_appendix()

subroutine, public fms_io_utils_mod::set_filename_appendix ( character(len=*), intent(in)  string_in)

Save "string_in" as a module variable that will added to the filename of the restart files.

Parameters
[in]string_inString that will be saved as a module variable

Definition at line 858 of file fms_io_utils.F90.

◆ string_compare()

logical function, public fms_io_utils_mod::string_compare ( character(len=*), intent(in)  string1,
character(len=*), intent(in)  string2,
logical, intent(in), optional  ignore_case 
)

Compare strings.

Returns
Flag telling if the strings are the same.

Definition at line 289 of file fms_io_utils.F90.