FrontISTR  6.0.0
Large-scale structural analysis program with finit element method
hecmw_dist_free_f.f90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
2 ! Copyright (c) 2019 FrontISTR Commons
3 ! This software is released under the MIT License, see LICENSE.txt
4 !-------------------------------------------------------------------------------
6 
8  use hecmw_util
9  implicit none
10 
11  public :: hecmw_dist_free
12 
13 contains
14 
15  subroutine hecmw_dist_free(mesh)
16  type(hecmwst_local_mesh) :: mesh
17 
18  call free_etc(mesh)
19  call free_node(mesh)
20  call free_elem(mesh)
21  call free_comm(mesh)
22  call free_adapt(mesh)
23  call free_refine(mesh)
24  call free_sect(mesh%section)
25  call free_mat(mesh%material)
26  call free_mpc(mesh%mpc)
27  call free_amp(mesh%amp)
28  call free_ngrp(mesh%node_group)
29  call free_egrp(mesh%elem_group)
30  call free_sgrp(mesh%surf_group)
31  call free_cpair(mesh%contact_pair)
32  call free_reforg(mesh%refine_origin)
33  end subroutine hecmw_dist_free
34 
35 
36  subroutine free_etc(mesh)
37  type(hecmwst_local_mesh) :: mesh
38 
39  if(associated(mesh%files)) deallocate(mesh%files)
40  end subroutine free_etc
41 
42 
43  subroutine free_node(mesh)
44  type(hecmwst_local_mesh) :: mesh
45 
46  if(associated(mesh%node)) deallocate(mesh%node)
47  if(associated(mesh%node_ID)) deallocate(mesh%node_ID)
48  if(associated(mesh%global_node_ID)) deallocate(mesh%global_node_ID)
49  if(associated(mesh%node_val_index)) deallocate(mesh%node_val_index)
50  if(associated(mesh%node_val_item)) deallocate(mesh%node_val_item)
51  if(associated(mesh%node_dof_index)) deallocate(mesh%node_dof_index)
52  if(associated(mesh%node_dof_item)) deallocate(mesh%node_dof_item)
53  if(associated(mesh%node_init_val_index)) deallocate(mesh%node_init_val_index)
54  if(associated(mesh%node_init_val_item)) deallocate(mesh%node_init_val_item)
55  if(associated(mesh%node_internal_list)) deallocate(mesh%node_internal_list)
56  end subroutine free_node
57 
58 
59  subroutine free_elem(mesh)
60  type(hecmwst_local_mesh) :: mesh
61 
62  if(associated(mesh%elem_type_index)) deallocate(mesh%elem_type_index)
63  if(associated(mesh%elem_type_item)) deallocate(mesh%elem_type_item)
64  if(associated(mesh%elem_type)) deallocate(mesh%elem_type)
65  if(associated(mesh%section_ID)) deallocate(mesh%section_ID)
66  if(associated(mesh%elem_mat_ID_index)) deallocate(mesh%elem_mat_ID_index)
67  if(associated(mesh%elem_mat_ID_item)) deallocate(mesh%elem_mat_ID_item)
68  if(associated(mesh%elem_node_index)) deallocate(mesh%elem_node_index)
69  if(associated(mesh%elem_node_item)) deallocate(mesh%elem_node_item)
70  if(associated(mesh%elem_ID)) deallocate(mesh%elem_ID)
71  if(associated(mesh%global_elem_ID)) deallocate(mesh%global_elem_ID)
72  if(associated(mesh%elem_internal_list)) deallocate(mesh%elem_internal_list)
73  if(associated(mesh%elem_mat_int_index)) deallocate(mesh%elem_mat_int_index)
74  if(associated(mesh%elem_mat_int_val)) deallocate(mesh%elem_mat_int_val)
75  if(associated(mesh%elem_val_index)) deallocate(mesh%elem_val_index)
76  if(associated(mesh%elem_val_item)) deallocate(mesh%elem_val_item)
77  end subroutine free_elem
78 
79 
80  subroutine free_comm(mesh)
81  type(hecmwst_local_mesh) :: mesh
82 
83  if(associated(mesh%neighbor_pe)) deallocate(mesh%neighbor_pe)
84  if(associated(mesh%import_index)) deallocate(mesh%import_index)
85  if(associated(mesh%import_item)) deallocate(mesh%import_item)
86  if(associated(mesh%export_index)) deallocate(mesh%export_index)
87  if(associated(mesh%export_item)) deallocate(mesh%export_item)
88  if(associated(mesh%shared_index)) deallocate(mesh%shared_index)
89  if(associated(mesh%shared_item)) deallocate(mesh%shared_item)
90  end subroutine free_comm
91 
92 
93  subroutine free_adapt(mesh)
94  type(hecmwst_local_mesh) :: mesh
95 
96  if(associated(mesh%when_i_was_refined_node)) deallocate(mesh%when_i_was_refined_node)
97  if(associated(mesh%when_i_was_refined_elem)) deallocate(mesh%when_i_was_refined_elem)
98  if(associated(mesh%adapt_parent_type)) deallocate(mesh%adapt_parent_type)
99  if(associated(mesh%adapt_type)) deallocate(mesh%adapt_type)
100  if(associated(mesh%adapt_level)) deallocate(mesh%adapt_level)
101  if(associated(mesh%adapt_parent)) deallocate(mesh%adapt_parent)
102  if(associated(mesh%adapt_children_index)) deallocate(mesh%adapt_children_index)
103  if(associated(mesh%adapt_children_item)) deallocate(mesh%adapt_children_item)
104  if(associated(mesh%adapt_edge_node)) deallocate(mesh%adapt_edge_node)
105  if(associated(mesh%adapt_mid_edge)) deallocate(mesh%adapt_mid_edge)
106  if(associated(mesh%adapt_iemb)) deallocate(mesh%adapt_iemb)
107  if(associated(mesh%adapt_edge_home)) deallocate(mesh%adapt_edge_home)
108  if(associated(mesh%adapt_act_edge)) deallocate(mesh%adapt_act_edge)
109  if(associated(mesh%adapt_import_edge_index)) deallocate(mesh%adapt_import_edge_index)
110  if(associated(mesh%adapt_import_edge_item)) deallocate(mesh%adapt_import_edge_item)
111  if(associated(mesh%adapt_export_edge_index)) deallocate(mesh%adapt_export_edge_index)
112  if(associated(mesh%adapt_export_edge_item)) deallocate(mesh%adapt_export_edge_item)
113  if(associated(mesh%adapt_import_elem_index)) deallocate(mesh%adapt_import_elem_index)
114  if(associated(mesh%adapt_import_elem_item)) deallocate(mesh%adapt_import_elem_item)
115  if(associated(mesh%adapt_export_elem_index)) deallocate(mesh%adapt_export_elem_index)
116  if(associated(mesh%adapt_export_elem_item)) deallocate(mesh%adapt_export_elem_item)
117  if(associated(mesh%adapt_import_new_index)) deallocate(mesh%adapt_import_new_index)
118  if(associated(mesh%adapt_import_new_item)) deallocate(mesh%adapt_import_new_item)
119  if(associated(mesh%adapt_export_new_index)) deallocate(mesh%adapt_export_new_index)
120  if(associated(mesh%adapt_export_new_item)) deallocate(mesh%adapt_export_new_item)
121  if(associated(mesh%rev_neighbor_pe)) deallocate(mesh%rev_neighbor_pe)
122  if(associated(mesh%adapt_act_elem_341)) deallocate(mesh%adapt_act_elem_341)
123  if(associated(mesh%adapt_act_elem_351)) deallocate(mesh%adapt_act_elem_351)
124  if(associated(mesh%adapt_OLDtoNEW_node)) deallocate(mesh%adapt_OLDtoNEW_node)
125  if(associated(mesh%adapt_NEWtoOLD_node)) deallocate(mesh%adapt_NEWtoOLD_node)
126  if(associated(mesh%adapt_OLDtoNEW_elem)) deallocate(mesh%adapt_OLDtoNEW_elem)
127  if(associated(mesh%adapt_NEWtoOLD_elem)) deallocate(mesh%adapt_NEWtoOLD_elem)
128  if(associated(mesh%adapt_IWK)) deallocate(mesh%adapt_IWK)
129  if(associated(mesh%adapt_children_local)) deallocate(mesh%adapt_children_local)
130  end subroutine free_adapt
131 
132  subroutine free_refine(mesh)
133  type(hecmwst_local_mesh) :: mesh
134  if(associated(mesh%node_old2new)) deallocate(mesh%node_old2new)
135  if(associated(mesh%node_new2old)) deallocate(mesh%node_new2old)
136  if(associated(mesh%elem_old2new)) deallocate(mesh%elem_old2new)
137  if(associated(mesh%elem_new2old)) deallocate(mesh%elem_new2old)
138  if(associated(mesh%n_node_refine_hist)) deallocate(mesh%n_node_refine_hist)
139  end subroutine
140 
141  subroutine free_sect(sect)
142  type(hecmwst_section) :: sect
143 
144  if(associated(sect%sect_type)) deallocate(sect%sect_type)
145  if(associated(sect%sect_opt)) deallocate(sect%sect_opt)
146  if(associated(sect%sect_mat_ID_index)) deallocate(sect%sect_mat_ID_index)
147  if(associated(sect%sect_mat_ID_item)) deallocate(sect%sect_mat_ID_item)
148  if(associated(sect%sect_I_index)) deallocate(sect%sect_I_index)
149  if(associated(sect%sect_I_item)) deallocate(sect%sect_I_item)
150  if(associated(sect%sect_R_index)) deallocate(sect%sect_R_index)
151  if(associated(sect%sect_R_item)) deallocate(sect%sect_R_item)
152  if(associated(sect%sect_orien_ID)) deallocate(sect%sect_orien_ID)
153  end subroutine free_sect
154 
155 
156  subroutine free_mat(mat)
157  type(hecmwst_material) :: mat
158 
159  if(associated(mat%mat_name)) deallocate(mat%mat_name)
160  if(associated(mat%mat_item_index)) deallocate(mat%mat_item_index)
161  if(associated(mat%mat_subitem_index)) deallocate(mat%mat_subitem_index)
162  if(associated(mat%mat_table_index)) deallocate(mat%mat_table_index)
163  if(associated(mat%mat_val)) deallocate(mat%mat_val)
164  if(associated(mat%mat_temp)) deallocate(mat%mat_temp)
165  end subroutine free_mat
166 
167 
168  subroutine free_mpc(mpc)
169  type(hecmwst_mpc) :: mpc
170 
171  if(associated(mpc%mpc_index)) deallocate(mpc%mpc_index)
172  if(associated(mpc%mpc_item)) deallocate(mpc%mpc_item)
173  if(associated(mpc%mpc_dof)) deallocate(mpc%mpc_dof)
174  if(associated(mpc%mpc_val)) deallocate(mpc%mpc_val)
175  end subroutine free_mpc
176 
177 
178  subroutine free_amp(amp)
179  type(hecmwst_amplitude) :: amp
180 
181  if(associated(amp%amp_name)) deallocate(amp%amp_name)
182  if(associated(amp%amp_type_definition)) deallocate(amp%amp_type_definition)
183  if(associated(amp%amp_type_time)) deallocate(amp%amp_type_time)
184  if(associated(amp%amp_type_value)) deallocate(amp%amp_type_value)
185  if(associated(amp%amp_index)) deallocate(amp%amp_index)
186  if(associated(amp%amp_val)) deallocate(amp%amp_val)
187  if(associated(amp%amp_table)) deallocate(amp%amp_table)
188  end subroutine free_amp
189 
190 
191  subroutine free_ngrp(grp)
192  type(hecmwst_node_grp) :: grp
193 
194  if(associated(grp%grp_name)) deallocate(grp%grp_name)
195  if(associated(grp%grp_index)) deallocate(grp%grp_index)
196  if(associated(grp%grp_item)) deallocate(grp%grp_item)
197  if(associated(grp%bc_grp_ID)) deallocate(grp%bc_grp_ID)
198  if(associated(grp%bc_grp_type)) deallocate(grp%bc_grp_type)
199  if(associated(grp%bc_grp_index)) deallocate(grp%bc_grp_index)
200  if(associated(grp%bc_grp_dof)) deallocate(grp%bc_grp_dof)
201  if(associated(grp%bc_grp_val)) deallocate(grp%bc_grp_val)
202  end subroutine free_ngrp
203 
204 
205  subroutine free_egrp(grp)
206  type(hecmwst_elem_grp) :: grp
207 
208  if(associated(grp%grp_name)) deallocate(grp%grp_name)
209  if(associated(grp%grp_index)) deallocate(grp%grp_index)
210  if(associated(grp%grp_item)) deallocate(grp%grp_item)
211  if(associated(grp%bc_grp_ID)) deallocate(grp%bc_grp_ID)
212  if(associated(grp%bc_grp_type)) deallocate(grp%bc_grp_type)
213  if(associated(grp%bc_grp_index)) deallocate(grp%bc_grp_index)
214  if(associated(grp%bc_grp_val)) deallocate(grp%bc_grp_val)
215  end subroutine free_egrp
216 
217 
218  subroutine free_sgrp(grp)
219  type(hecmwst_surf_grp) :: grp
220 
221  if(associated(grp%grp_name)) deallocate(grp%grp_name)
222  if(associated(grp%grp_index)) deallocate(grp%grp_index)
223  if(associated(grp%grp_item)) deallocate(grp%grp_item)
224  if(associated(grp%bc_grp_ID)) deallocate(grp%bc_grp_ID)
225  if(associated(grp%bc_grp_type)) deallocate(grp%bc_grp_type)
226  if(associated(grp%bc_grp_index)) deallocate(grp%bc_grp_index)
227  if(associated(grp%bc_grp_val)) deallocate(grp%bc_grp_val)
228  end subroutine free_sgrp
229 
230  subroutine free_cpair(cpair)
231  type(hecmwst_contact_pair) :: cpair
232 
233  if(associated(cpair%name)) deallocate(cpair%name)
234  if(associated(cpair%type)) deallocate(cpair%type)
235  if(associated(cpair%slave_grp_id)) deallocate(cpair%slave_grp_id)
236  if(associated(cpair%slave_orisgrp_id)) deallocate(cpair%slave_orisgrp_id)
237  if(associated(cpair%master_grp_id)) deallocate(cpair%master_grp_id)
238  end subroutine free_cpair
239 
240  subroutine free_reforg(reforg)
241  type(hecmwst_refine_origin) :: reforg
242 
243  if(associated(reforg%index)) deallocate(reforg%index)
244  if(associated(reforg%item_index)) deallocate(reforg%item_index)
245  if(associated(reforg%item_item)) deallocate(reforg%item_item)
246  end subroutine free_reforg
247 
248 end module hecmw_dist_free_f
249 
I/O and Utility.
subroutine free_adapt(mesh)
subroutine free_node(mesh)
subroutine free_cpair(cpair)
subroutine free_amp(amp)
subroutine free_sect(sect)
subroutine free_reforg(reforg)
subroutine free_refine(mesh)
subroutine free_comm(mesh)
subroutine free_mat(mat)
subroutine free_etc(mesh)
subroutine, public hecmw_dist_free(mesh)
subroutine free_elem(mesh)
I/O and Utility.
Definition: hecmw_util_f.F90:7