29 if(
associated(f%FLOAD_ngrp_GRPID))
deallocate(f%FLOAD_ngrp_GRPID)
30 if(
associated(f%FLOAD_ngrp_ID))
deallocate(f%FLOAD_ngrp_ID)
31 if(
associated(f%FLOAD_ngrp_TYPE))
deallocate(f%FLOAD_ngrp_TYPE)
32 if(
associated(f%FLOAD_ngrp_DOF))
deallocate(f%FLOAD_ngrp_DOF)
33 if(
associated(f%FLOAD_ngrp_valre))
deallocate(f%FLOAD_ngrp_valre)
34 if(
associated(f%FLOAD_ngrp_valim))
deallocate(f%FLOAD_ngrp_valim)
35 if(
associated(f%FACC_ngrp_ID))
deallocate(f%FACC_ngrp_ID)
36 if(
associated(f%FACC_ngrp_type))
deallocate(f%FACC_ngrp_type)
37 if(
associated(f%FACC_ngrp_valre))
deallocate(f%FACC_ngrp_valre)
38 if(
associated(f%FACC_ngrp_valim))
deallocate(f%FACC_ngrp_valim)
44 if(
associated(f%eigOmega))
deallocate(f%eigOmega)
45 if(
associated(f%eigVector))
deallocate(f%eigVector)
54 integer(kind=kint) :: ctrl
57 integer(kind=kint) :: rcode
58 character(HECMW_NAME_LEN),
pointer :: grp_id_name(:)
59 real(kind=kreal),
pointer :: val_ptr(:)
60 integer(kind=kint),
pointer :: id_ptr(:)
61 integer(kind=kint) :: n
62 integer(kind=kint) :: gid, loadcase
65 if( p%SOLID%file_type /=
kbcffstr)
return
81 allocate( grp_id_name(n) )
83 allocate( val_ptr(n) )
90 write(*,*)
"Error this load set is not defined!"
91 write(
ilog,*)
"Error this load set is not defined!"
95 n, grp_id_name, id_ptr, val_ptr )
97 deallocate( grp_id_name )
100 nullify( grp_id_name )
108 integer(kind=kint) :: ctrl
109 character(len=HECMW_NAME_LEN) :: node_id(:)
110 integer(kind=kint),
pointer :: dof_id(:)
111 integer(kind=kint) :: node_id_len
112 real(kind=kreal),
pointer :: value(:)
114 character(len=HECMW_NAME_LEN) :: data_fmt, ss
116 write(ss,*) node_id_len
117 write(data_fmt,
'(a,a,a)')
'S', trim(adjustl(ss)),
'IR '
133 integer(kind=kint) :: ctrl
136 integer(kind=kint) :: rcode
137 character(HECMW_NAME_LEN),
pointer :: grp_id_name(:)
138 integer(kind=kint),
pointer :: dof_ids(:)
139 integer(kind=kint),
pointer :: dof_ide(:)
140 real(kind=kreal),
pointer :: val_ptr(:)
141 integer(kind=kint) :: n
142 integer(kind=kint) :: loadcase
146 if( p%SOLID%file_type /=
kbcffstr)
return
152 write(*,*)
'fstr control file error : !FACCELERATION : LOAD CASE must be 1 or 2'
153 write(
ilog,*)
'fstr control file error : !FACCELERATION : LOAD CASE must be 1 or 2'
154 stop hecmw_exit_input
161 allocate( grp_id_name(n) )
162 allocate( dof_ids(n) )
163 allocate( dof_ide(n) )
164 allocate( val_ptr(n) )
170 n, grp_id_name, dof_ids, dof_ide, val_ptr )
172 deallocate( grp_id_name )
173 deallocate( dof_ids )
174 deallocate( dof_ide )
175 deallocate( val_ptr )
182 integer(kind=kint) :: ctrl
183 character(len=HECMW_NAME_LEN) :: node_id(:)
184 integer(kind=kint) :: node_id_len
185 integer(kind=kint),
pointer :: dof_ids(:)
186 integer(kind=kint),
pointer :: dof_ide(:)
187 real(kind=kreal),
pointer :: value(:)
189 character(len=HECMW_NAME_LEN) :: data_fmt, ss
192 write(ss,*) node_id_len
193 write(data_fmt,
'(a,a,a)')
'S', trim(adjustl(ss)),
'IIr '
205 integer(kind=kint) :: ctrl
208 integer(kind=kint) :: filename_len
209 character(len=HECMW_NAME_LEN) :: datafmt, ss
212 filename_len = hecmw_filename_len
213 write(ss,*) filename_len
214 write(datafmt,
'(a,a,a)')
'F', trim(adjustl(ss)),
' '
227 n, grp_names, dofs, vals )
229 type(hecmwst_local_mesh),
target :: hecMESH
231 character(len=*),
intent(in) :: header_name
232 integer(kind=kint),
intent(in) :: gid
233 integer(kind=kint),
intent(in) :: loadcase
234 integer(kind=kint),
intent(in) :: n
235 character(len=HECMW_NAME_LEN),
intent(in) :: grp_names(:)
236 integer(kind=kint),
intent(in) :: dofs(:)
237 real(kind=kreal),
intent(in) :: vals(:)
239 integer(kind=kint) :: i, old_size, new_size
242 old_size = fstrfreq%FLOAD_ngrp_tot
243 new_size = old_size + n
246 fstrfreq%FLOAD_ngrp_tot = new_size
257 fstrfreq%FLOAD_ngrp_DOF(old_size+i) = dofs(i)
258 fstrfreq%FLOAD_ngrp_valre(old_size+i) = vals(i)
262 fstrfreq%FLOAD_ngrp_DOF(old_size+i) = dofs(i)
263 fstrfreq%FLOAD_ngrp_valim(old_size+i) = vals(i)
266 fstrfreq%FLOAD_ngrp_GRPID(old_size+1:new_size) = gid
268 fstrfreq%FLOAD_ngrp_ID(old_size+1:), fstrfreq%FLOAD_ngrp_TYPE(old_size+1:))
276 n, grp_names, dof_ids, dof_ide, vals )
278 type(hecmwst_local_mesh),
target :: hecMESH
280 character(len=*),
intent(in) :: header_name
281 integer(kind=kint),
intent(in) :: loadcase
282 integer(kind=kint),
intent(in) :: n
283 character(len=HECMW_NAME_LEN),
intent(in) :: grp_names(:)
284 integer(kind=kint),
intent(in) :: dof_ids(:)
285 integer(kind=kint),
intent(in) :: dof_ide(:)
286 real(kind=kreal),
intent(in) :: vals(:)
288 integer(kind=kint) :: i, old_size, new_size
291 old_size = fstrfreq%FACC_ngrp_tot
292 new_size = old_size + n
295 fstrfreq%FACC_ngrp_tot = new_size
306 if( (dof_ids(i) < 1).or.(6 < dof_ids(i)).or.(dof_ide(i) < dof_ids(i)).or.(6 < dof_ide(i)) )
then
308 ' : range of dof_ids and dof_ide is from 1 to 6' )
311 fstrfreq%FACC_ngrp_type(old_size+i) = 10 * dof_ids(i) + dof_ide(i)
314 fstrfreq%FACC_ngrp_valre(old_size+i) = vals(i)
316 fstrfreq%FACC_ngrp_valim(old_size+i) = vals(i)
int fstr_ctrl_get_param_ex(int *ctrl, const char *param_name, const char *value_list, int *necessity, char *type, void *val)
int fstr_ctrl_get_data_array_ex(int *ctrl, const char *format,...)
int fstr_ctrl_get_data_ex(int *ctrl, int *line_no, const char *format,...)
integer(kind=kint) function fstr_ctrl_get_fload(ctrl, node_id, node_id_len, dof_id, value)
integer(kind=kint) function fstr_ctrl_get_facceleration(ctrl, node_id, node_id_len, dof_ids, dof_ide, value)
This module contains auxiliary functions in calculation setup.
subroutine fstr_ctrl_err_stop
subroutine nodesurf_grp_name_to_id_ex(hecMESH, header_name, n, grp_id_name, grp_ID, grp_TYPE)
subroutine fstr_setup_util_err_stop(msg)
This module contains auxiliary functions in calculation setup.
subroutine hecmw_expand_integer_array(array, old_size, new_size)
subroutine node_grp_name_to_id_ex(hecMESH, header_name, n, grp_id_name, grp_ID)
subroutine hecmw_expand_real_array(array, old_size, new_size)
This module provides subroutines to read the cards of frequency response analysis into fstr_freqanaly...
subroutine fstr_setup_facceleration(ctrl, P)
Read in !FACCELERATION !
subroutine fstr_freq_append_facceleration(hecMESH, fstrFREQ, header_name, loadcase, n, grp_names, dof_ids, dof_ide, vals)
Append !FACCELERATION !
subroutine fstr_freqanalysis_data_finalize(f)
subroutine fstr_freq_append_fload(hecMESH, fstrFREQ, header_name, gid, loadcase, n, grp_names, dofs, vals)
Append !FLOAD !
subroutine fstr_setup_fload(ctrl, P)
Read in !FLOAD !
subroutine fstr_freqanalysis_finalize(f)
subroutine fstr_setup_eigenread(ctrl, P)
Read in !EIGENREAD !
This module defines common data and basic structures for analysis.
integer(kind=kint), parameter kbcffstr
boundary condition file type (bcf)
integer(kind=kint), parameter kfloadcase_im
integer(kind=kint), parameter ilog
FILE HANDLER.
integer(kind=kint), parameter kfloadcase_re
Package of all data needs to initialize.