@@ -137,30 +137,38 @@ contains
137
137
138
138
#:for k1, t1 in KINDS_TYPES
139
139
#:for rank in RANKS
140
- module subroutine add_array_${t1[0]}$${k1}$_${rank}$(arrays, array, name, stat, msg)
140
+ module subroutine add_array_${t1[0]}$${k1}$_${rank}$(arrays, array, stat, msg, name )
141
141
!> Array of arrays to which the array is to be added.
142
142
type(t_array_wrapper), allocatable, intent(inout) :: arrays(:)
143
143
!> Array to be added.
144
144
${t1}$, intent(in) :: array${ranksuffix(rank)}$
145
- !> Name of the array to be added.
146
- character(len=*), intent(in) :: name
147
145
!> Status of addition.
148
146
integer, intent(out), optional :: stat
149
147
!> Error message.
150
148
character(len=:), allocatable, intent(out), optional :: msg
149
+ !> Name of the array to be added. A default name will be used if not provided.
150
+ character(len=*), intent(in), optional :: name
151
151
152
152
integer :: i, arr_size
153
153
type(t_array_${t1[0]}$${k1}$_${rank}$) :: t_arr
154
154
155
155
if (present(stat)) stat = 0
156
156
157
- if (trim(name) == '') then
158
- if (present(stat)) stat = 1
159
- if (present(msg)) msg = "Array name cannot be empty."
160
- return
157
+ if (present(name)) then
158
+ if (trim(name) == '') then
159
+ if (present(stat)) stat = 1
160
+ if (present(msg)) msg = "Array name cannot be empty."
161
+ return
162
+ end if
163
+ t_arr%name = name
164
+ else
165
+ if (allocated(arrays)) then
166
+ t_arr%name = "arr_"//trim(to_string(size(arrays)))//".npy"
167
+ else
168
+ t_arr%name = "arr_0.npy"
169
+ end if
161
170
end if
162
171
163
- t_arr%name = name
164
172
t_arr%values = array
165
173
166
174
if (.not. allocated(arrays)) then
@@ -171,9 +179,9 @@ contains
171
179
172
180
arr_size = size(arrays)
173
181
do i = 1, arr_size
174
- if (arrays(i)%array%name == name) then
182
+ if (arrays(i)%array%name == t_arr% name) then
175
183
if (present(stat)) stat = 1
176
- if (present(msg)) msg = "Array with the same name '"//name//"' already exists."
184
+ if (present(msg)) msg = "Array with the same name '"//t_arr% name//"' already exists."
177
185
return
178
186
end if
179
187
end do
0 commit comments