34 character(len=HECMW_FILENAME_LEN) ::
name_id
40 real(kind=kreal) :: t1, t2, t3
42 t1=0.0d0; t2=0.0d0; t3=0.0d0
47 myrank = hecmw_comm_get_rank()
48 nprocs = hecmw_comm_get_size()
55 if(
hecmesh%contact_pair%n_pair > 0 )
then
57 hecmesh%hecmw_flag_partcontact /= hecmw_flag_partcontact_aggregate )
then
75 select case(
fstrpr%solution_type )
94 write(*,*)
'===================================='
95 write(*,
'(a,f10.2)')
' TOTAL TIME (sec) :', t3 - t1
96 write(*,
'(a,f10.2)')
' pre (sec) :', t2 - t1
97 write(*,
'(a,f10.2)')
' solve (sec) :', t3 - t2
98 write(*,*)
'===================================='
100 write(
imsg,*)
'===================================='
101 write(
imsg,
'(a,f10.2)')
' TOTAL TIME (sec) :', t3 - t1
102 write(
imsg,
'(a,f10.2)')
' pre (sec) :', t2 - t1
103 write(
imsg,
'(a,f10.2)')
' solve (sec) :', t3 - t2
104 write(
imsg,*)
'===================================='
113 if(
hecmesh%my_rank==0)
write(*,*)
'FrontISTR Completed !!'
125 call hecmw_nullify_matrix (
hecmat )
126 call hecmw_nullify_matrix (
conmat )
181 character(len=HECMW_FILENAME_LEN) :: s, r
182 character(len=HECMW_FILENAME_LEN) :: stafileNAME
183 character(len=HECMW_FILENAME_LEN) :: logfileNAME
184 character(len=HECMW_FILENAME_LEN) :: msgfileNAME
185 character(len=HECMW_FILENAME_LEN) :: dbgfileNAME
186 integer :: stat, flag, limit, irank
192 write( logfilename,
'(a,a)') trim(adjustl(s)),
'.log'
193 logfilename = adjustl(logfilename)
194 write( dbgfilename,
'(a,a)')
'FSTR.dbg.', trim(adjustl(s))
195 dbgfilename = adjustl(dbgfilename)
200 write( logfilename,
'(a,a,a,a,a)')
'LOG/TRUNK', trim(adjustl(r)),
'/', trim(adjustl(s)),
'.log'
201 logfilename = adjustl(logfilename)
203 if( stat /= 0 )
call fstr_setup_util_err_stop(
'### Cannot create directory' )
204 write( dbgfilename,
'(a,a,a,a,a)')
'DBG/TRUNK', trim(adjustl(r)),
'/',
'FSTR.dbg.', trim(adjustl(s))
205 dbgfilename = adjustl(dbgfilename)
207 if( stat /= 0 )
call fstr_setup_util_err_stop(
'### Cannot create directory' )
209 write( logfilename,
'(a,a,a)')
'LOG/', trim(adjustl(s)),
'.log'
210 logfilename = adjustl(logfilename)
212 if( stat /= 0 )
call fstr_setup_util_err_stop(
'### Cannot create directory' )
213 write( dbgfilename,
'(a,a,a)')
'DBG/',
'FSTR.dbg.', trim(adjustl(s))
214 dbgfilename = adjustl(dbgfilename)
216 if( stat /= 0 )
call fstr_setup_util_err_stop(
'### Cannot create directory' )
219 stafilename =
'FSTR.sta'
220 msgfilename =
'FSTR.msg'
225 open(
imsg, file=msgfilename, status=
'replace', iostat=stat)
227 call fstr_setup_util_err_stop(
'### Cannot open message file :'//msgfilename )
229 write(
imsg,*)
':========================================:'
230 write(
imsg,*)
':** BEGIN FSTR Structural Analysis **:'
231 write(
imsg,*)
':========================================:'
232 write(
imsg,*)
' Total no. of processors: ',
nprocs
236 write(
imsg,*)
' * STAGE Initialization and input **'
240 open (
ilog, file = logfilename, status =
'replace', iostat=stat )
242 call fstr_setup_util_err_stop(
'### Cannot open log file :'//logfilename )
246 open (
ista,file = stafilename, status =
'replace', iostat=stat )
247 write(
ista,
'(''####''a80)') stafilename
249 call fstr_setup_util_err_stop(
'### Cannot open status file :'//stafilename )
253 open (
idbg,file = dbgfilename, status =
'replace')
254 write(
idbg,
'(''####''a80)') dbgfilename
256 call fstr_setup_util_err_stop(
'### Cannot open debug file :'//dbgfilename )
264 character(len=HECMW_FILENAME_LEN) :: cntfileNAME
267 call hecmw_ctrl_get_control_file(
name_id, cntfilename )
279 if(
myrank == 0)
write(*,*)
'fstr_setup: OK'
280 write(
ilog,*)
'fstr_setup: OK'
301 if(
myrank == 0)
write(
imsg,*)
' *** STAGE Non Linear static analysis **'
303 if(
myrank == 0 )
write(
imsg,*)
' *** STAGE Linear static analysis **'
330 write(
imsg,*)
' *** STAGE Eigenvalue analysis **'
345 if(myrank .EQ. 0)
then
349 write(imsg,*)
' *** STAGE Heat analysis **'
369 if( fstrpr%nlgeom )
then
370 write(imsg,*)
' *** STAGE Nonlinear dynamic analysis **'
372 write(imsg,*)
' *** STAGE Linear dynamic analysis **'
376 if( paracontactflag )
then
400 write(imsg,*)
' *** STAGE Static -> Eigen analysis **'
401 write(*,*)
' *** STAGE Static -> Eigen analysis **'
403 write(imsg,*)
' *** Stage 1: Nonlinear dynamic analysis **'
404 write(*,*)
' *** Stage 1: Nonlinear dynamic analysis **'
411 write(imsg,*)
' *** Stage 2: Eigenvalue analysis **'
413 write(*,*)
' *** Stage 2: Eigenvalue analysis **'
429 if( myrank == 0 )
then
433 write(imsg,*)
':========================================:'
434 write(imsg,*)
':** END of FSTR **:'
435 write(imsg,*)
':========================================:'
441 call hecmat_finalize(
hecmat )
void hecmw_ctrl_is_subdir(int *flag, int *limit)
void hecmw_ctrl_make_subdir(char *filename, int *err, int len)
This module contains functions to print out calculation settings.
This module contains subroutines controlling dynamic calculation.
subroutine fstr_solve_dynamic(hecmesh, hecmat, fstrsolid, fstreig, fstrdynamic, fstrresult, fstrparam, fstrcpl, fstrfreq, fstrmat, conmat)
Master subroutine for dynamic analysis.
type(hecmwst_result_data), save fstrresult
subroutine fstr_dynamic_analysis
Master subroutine of dynamic analysis !
type(hecmwst_matrix), save hecmat
subroutine fstr_static_eigen_analysis
Master subroutine of static -> eigen anaylsis !
subroutine fstr_init
Initializer !
subroutine fstr_heat_analysis
Master subroutine of heat analysis !
type(hecmwst_local_mesh), save hecmesh
subroutine fstr_init_condition
Read in control file and do all preparation.
type(fstr_solid), save fstrsolid
type(fstr_heat), save fstrheat
subroutine fstr_static_analysis
Master subroutine of linear/nonlinear static analysis !
character(len=hecmw_filename_len) name_id
subroutine fstr_finalize
Finalizer !
type(fstr_dynamic), save fstrdynamic
type(fstr_couple), save fstrcpl
type(fstrst_matrix_contact_lagrange), save fstrmat
subroutine fstr_init_file
Open all files preparing calculation.
type(fstr_freqanalysis), save fstrfreq
type(hecmwst_matrix), save conmat
subroutine fstr_eigen_analysis
Master subroutine of eigen analysis !
type(fstr_eigen), save fstreig
This module provides function to check input data of IFSTR solver.
subroutine fstr_precheck(hecmesh, hecmat, soltype)
subroutine, public fstr_rcap_finalize(fstrparam, fstrcpl)
subroutine, public fstr_rcap_initialize(hecmesh, fstrparam, fstrcpl)
This module provides functions to read in data from control file and do neccessary preparation for fo...
subroutine fstr_heat_init(fstrheat)
Initial setting of heat analysis.
subroutine fstr_solid_init(hecmesh, fstrsolid)
Initializer of structure fstr_solid.
subroutine fstr_dynamic_init(fstrdynamic)
Initial setting of dynamic calculation.
subroutine fstr_eigen_init(fstreig)
Initial setting of eigen ca;culation.
subroutine fstr_setup(cntl_filename, hecmesh, fstrparam, fstrsolid, fstreig, fstrheat, fstrdynamic, fstrcpl, fstrfreq)
Read in and initialize control data !
subroutine fstr_solid_finalize(fstrsolid)
Finalizer of fstr_solid.
This module provides a function to control eigen analysis.
subroutine fstr_solve_eigen(hecmesh, hecmat, fstreig, fstrsolid, fstrresult, fstrparam, fstrmat)
solve eigenvalue probrem
This module provides a function to control heat analysis.
subroutine fstr_solve_heat(hecmesh, hecmat, fstrresult, fstrparam, fstrheat)
This module provides main suboruitne for nonliear calculation.
subroutine fstr_solve_nlgeom(hecmesh, hecmat, fstrsolid, fstrmat, fstrparam, conmat)
This module provides main suborutine for nonlinear calculation.
This module defined coomon data and basic structures for analysis.
integer(kind=kint), pointer iresult
subroutine fstr_mat_init(hecmat)
Initializer of structure hecmwST_matrix.
integer(kind=kint) myrank
PARALLEL EXECUTION.
integer(kind=kint), parameter imsg
real(kind=kreal), dimension(100) svrarray
integer(kind=kint), parameter kstdynamic
subroutine fstr_param_init(fstrparam, hecmesh)
Initializer of structure fstr_param.
integer(kind=kint), pointer ineutral
integer(kind=kint), parameter idbg
subroutine fstr_nullify_fstr_solid(s)
integer(kind=kint), dimension(100) sviarray
SOLVER CONTROL.
integer(kind=kint) nprocs
subroutine fstr_nullify_fstr_param(p)
NULL POINTER SETTING TO AVOID RUNTIME ERROR.
integer(kind=kint), pointer iwres
integer(kind=kint), parameter ilog
FILE HANDLER.
subroutine fstr_nullify_fstr_eigen(e)
integer(kind=kint), pointer nprint
real(kind=kreal) dt
ANALYSIS CONTROL for NLGEOM and HEAT.
integer(kind=kint), pointer nrres
integer(kind=kint), parameter kststatic
subroutine fstr_nullify_fstr_dynamic(dy)
integer(kind=kint), parameter kstprecheck
solution type (st)
integer(kind=kint), parameter kststaticeigen
integer(kind=kint), parameter kstheat
integer(kind=kint), parameter ista
real(kind=kreal), pointer ref_temp
REFTEMP.
integer(kind=kint), parameter kstnzprof
integer(kind=kint), pointer irres
integer(kind=kint), pointer iecho
FLAG for ECHO/RESULT/POST.
type(fstr_param), target fstrpr
GLOBAL VARIABLE INITIALIZED IN FSTR_SETUP.
subroutine fstr_nullify_fstr_couple(c)
integer(kind=kint), parameter ksteigen
subroutine fstr_nullify_fstr_heat(h)
integer(kind=kint), pointer ivisual
subroutine hecmat_init(hecmat)
logical paracontactflag
PARALLEL CONTACT FLAG.
subroutine heat_echo(p, hecmesh, fstrheat)
This module provides functions to initialize heat analysis.
subroutine heat_init_amplitude(hecmesh, fstrheat)
subroutine heat_init_material(hecmesh, fstrheat)
HECMW to FSTR Mesh Data Converter. Convering Conectivity of Element Type 232, 342 and 352.
subroutine hecmw2fstr_mesh_conv(hecmesh)
This module provide a function to ECHO for IFSTR solver.
subroutine fstr_echo(hecmesh)
ECHO for IFSTR solver.
Data for coupling analysis.
Data for DYNAMIC ANSLYSIS (fstrDYNAMIC)
Package of data used by Lanczos eigenvalue solver.
Data for HEAT ANSLYSIS (fstrHEAT)