FMS  2025.04
Flexible Modeling System
unstructured_domain_write.inc
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 !> @file
19 !> @brief Routines to write data from an unstructured domain decomposition.
20 !! Used in the @ref write_data interface
21 
22 !> @addtogroup fms2_io_mod
23 !> @{
24 
25 !> @brief Wrapper to distinguish interfaces.
26 subroutine unstructured_domain_write_0d(fileobj, variable_name, variable_data, &
27  unlim_dim_level, corner)
28 
29  type(fmsnetcdfunstructureddomainfile_t), intent(in) :: fileobj !< File object.
30  character(len=*), intent(in) :: variable_name !< Variable name.
31  class(*), intent(in) :: variable_data !< Data that will be
32  !! written.
33  integer, intent(in), optional :: unlim_dim_level !< Unlimited dimension
34  !! level.
35  integer, intent(in), optional :: corner !< Array of starting
36  !! indices describing
37  !! where the data
38  !! will be written to.
39 
40  call compressed_write(fileobj, variable_name, variable_data, unlim_dim_level, corner)
41 end subroutine unstructured_domain_write_0d
42 
43 
44 !> @brief Wrapper to distinguish interfaces.
45 subroutine unstructured_domain_write_1d(fileobj, variable_name, variable_data, &
46  unlim_dim_level, corner, edge_lengths)
47 
48  type(fmsnetcdfunstructureddomainfile_t), intent(in) :: fileobj !< File object.
49  character(len=*), intent(in) :: variable_name !< Variable name.
50  class(*), dimension(:), intent(in) :: variable_data !< Data that will be
51  !! written.
52  integer, intent(in), optional :: unlim_dim_level !< Unlimited dimension
53  !! level.
54  integer, dimension(1), intent(in), optional :: corner !< Array of starting
55  !! indices describing
56  !! where the data
57  !! will be written to.
58  integer, dimension(1), intent(in), optional :: edge_lengths !< The number of
59  !! elements that
60  !! will be written
61  !! in each dimension.
62 
63  call compressed_write(fileobj, variable_name, variable_data, unlim_dim_level, corner, &
64  edge_lengths=edge_lengths)
65 end subroutine unstructured_domain_write_1d
66 
67 
68 !> @brief Wrapper to distinguish interfaces.
69 subroutine unstructured_domain_write_2d(fileobj, variable_name, variable_data, &
70  unlim_dim_level, corner, edge_lengths)
71 
72  type(fmsnetcdfunstructureddomainfile_t), intent(in) :: fileobj !< File object.
73  character(len=*), intent(in) :: variable_name !< Variable name.
74  class(*), dimension(:,:), intent(in) :: variable_data !< Data that will be
75  !! written.
76  integer, intent(in), optional :: unlim_dim_level !< Unlimited dimension
77  !! level.
78  integer, dimension(2), intent(in), optional :: corner !< Array of starting
79  !! indices describing
80  !! where the data
81  !! will be written to.
82  integer, dimension(2), intent(in), optional :: edge_lengths !< The number of
83  !! elements that
84  !! will be written
85  !! in each dimension.
86 
87  call compressed_write(fileobj, variable_name, variable_data, unlim_dim_level, corner, &
88  edge_lengths=edge_lengths)
89 end subroutine unstructured_domain_write_2d
90 
91 
92 !> @brief Wrapper to distinguish interfaces.
93 subroutine unstructured_domain_write_3d(fileobj, variable_name, variable_data, &
94  unlim_dim_level, corner, edge_lengths)
95 
96  type(fmsnetcdfunstructureddomainfile_t), intent(in) :: fileobj !< File object.
97  character(len=*), intent(in) :: variable_name !< Variable name.
98  class(*), dimension(:,:,:), intent(in) :: variable_data !< Data that will be
99  !! written.
100  integer, intent(in), optional :: unlim_dim_level !< Unlimited dimension
101  !! level.
102  integer, dimension(3), intent(in), optional :: corner !< Array of starting
103  !! indices describing
104  !! where the data
105  !! will be written to.
106  integer, dimension(3), intent(in), optional :: edge_lengths !< The number of
107  !! elements that
108  !! will be written
109  !! in each dimension.
110 
111  call compressed_write(fileobj, variable_name, variable_data, unlim_dim_level, corner, &
112  edge_lengths=edge_lengths)
113 end subroutine unstructured_domain_write_3d
114 
115 
116 !> @brief Wrapper to distinguish interfaces.
117 subroutine unstructured_domain_write_4d(fileobj, variable_name, variable_data, &
118  unlim_dim_level, corner, edge_lengths)
119 
120  type(fmsnetcdfunstructureddomainfile_t), intent(in) :: fileobj !< File object.
121  character(len=*), intent(in) :: variable_name !< Variable name.
122  class(*), dimension(:,:,:,:), intent(in) :: variable_data !< Data that will be
123  !! written.
124  integer, intent(in), optional :: unlim_dim_level !< Unlimited dimension
125  !! level.
126  integer, dimension(4), intent(in), optional :: corner !< Array of starting
127  !! indices describing
128  !! where the data
129  !! will be written to.
130  integer, dimension(4), intent(in), optional :: edge_lengths !< The number of
131  !! elements that
132  !! will be written
133  !! in each dimension.
134 
135  call compressed_write(fileobj, variable_name, variable_data, unlim_dim_level, corner, &
136  edge_lengths=edge_lengths)
137 end subroutine unstructured_domain_write_4d
138 
139 
140 !> @brief Wrapper to distinguish interfaces.
141 subroutine unstructured_domain_write_5d(fileobj, variable_name, variable_data, &
142  unlim_dim_level, corner, edge_lengths)
143 
144  type(fmsnetcdfunstructureddomainfile_t), intent(in) :: fileobj !< File object.
145  character(len=*), intent(in) :: variable_name !< Variable name.
146  class(*), dimension(:,:,:,:,:), intent(in) :: variable_data !< Data that will be
147  !! written.
148  integer, intent(in), optional :: unlim_dim_level !< Unlimited dimension
149  !! level.
150  integer, dimension(5), intent(in), optional :: corner !< Array of starting
151  !! indices describing
152  !! where the data
153  !! will be written to.
154  integer, dimension(5), intent(in), optional :: edge_lengths !< The number of
155  !! elements that
156  !! will be written
157  !! in each dimension.
158 
159  call compressed_write(fileobj, variable_name, variable_data, unlim_dim_level, corner, &
160  edge_lengths=edge_lengths)
161 end subroutine unstructured_domain_write_5d
162 !> @}
subroutine unstructured_domain_write_2d(fileobj, variable_name, variable_data, unlim_dim_level, corner, edge_lengths)
Wrapper to distinguish interfaces.
subroutine unstructured_domain_write_3d(fileobj, variable_name, variable_data, unlim_dim_level, corner, edge_lengths)
Wrapper to distinguish interfaces.
subroutine unstructured_domain_write_0d(fileobj, variable_name, variable_data, unlim_dim_level, corner)
Wrapper to distinguish interfaces.
subroutine unstructured_domain_write_4d(fileobj, variable_name, variable_data, unlim_dim_level, corner, edge_lengths)
Wrapper to distinguish interfaces.
subroutine unstructured_domain_write_1d(fileobj, variable_name, variable_data, unlim_dim_level, corner, edge_lengths)
Wrapper to distinguish interfaces.
subroutine unstructured_domain_write_5d(fileobj, variable_name, variable_data, unlim_dim_level, corner, edge_lengths)
Wrapper to distinguish interfaces.