31 integer(kind=kint) :: ctrl
34 integer(kind=kint) :: rcode
46 integer(kind=kint) :: ctrl
49 integer(kind=kint) :: rcode
62 integer(kind=kint) :: ctrl
65 integer(kind=kint) :: rcode
78 integer(kind=kint) :: ctrl
81 integer(kind=kint) :: rcode
85 if( slot%first > 1 )
then
86 write(
ilog,*)
'### Error : !SOLVER exists twice in FSTR control file.'
124 p%MAT%Iarray(2), p%MAT%Iarray(3), p%MAT%Iarray(4), &
125 p%MAT%Iarray(21), p%MAT%Iarray(22), p%MAT%Iarray(23), &
126 p%MAT%Iarray(1), p%MAT%Iarray(5), p%MAT%Iarray(6), p%MAT%Iarray(60), p%MAT%Iarray(7), &
127 p%MAT%Iarray(31), p%MAT%Iarray(32), p%MAT%Iarray(33), p%MAT%Iarray(34), &
128 p%MAT%Iarray(13), p%MAT%Iarray(14), p%MAT%Iarray(8), &
129 p%MAT%Iarray(35), p%MAT%Iarray(41:50), p%MAT%Iarray(15), &
130 p%MAT%Rarray(1), p%MAT%Rarray(2), p%MAT%Rarray(3), &
131 p%MAT%Rarray(4), p%MAT%Rarray(5), p%MAT%Rarray(41:50), p%MAT%Iarray(24), &
132 p%MAT%Iarray(36), p%MAT%Iarray(37), p%MAT%Iarray(16) )
135 if( p%MAT%Iarray(2) <= 100 )
then
138 p%MAT%Iarray(99) = p%MAT%Iarray(2)-99
149 integer(kind=kint) :: ctrl
156 write(*,*)
'### Error: Fail in read in ORIENTATION definition : ', slot%first
157 write(
ilog,*)
'### Error: Fail in read in ORIENTATION definition : ', slot%first
158 stop hecmw_exit_input
166 integer(kind=kint) :: ctrl
167 type( hecmwst_local_mesh ) :: hecmesh
168 type( tlocalcoordsys ) :: coordsys
170 character(len=HECMW_NAME_LEN) :: grp_id_name(1)
172 integer :: nid, dtype
173 character(len=HECMW_NAME_LEN) :: data_fmt
174 real(kind=kreal) :: fdum, xyza(3), xyzb(3), xyzc(3), ff1(3), ff2(3), ff3(3)
179 coordsys%sys_type = 10
182 data_fmt =
'COORDINATES,NODES,LOCAL_NODES '
185 coordsys%sys_type = coordsys%sys_type + dtype
188 coordsys%sys_name = grp_id_name(1)
191 data_fmt =
"RRRRRRrrr "
194 xyza(3), xyzb(1), xyzb(2), xyzb(3), xyzc(1), xyzc(2), xyzc(3) )/=0 )
return
195 if( coordsys%sys_type==10 )
then
197 fdum = dsqrt( dot_product(ff1, ff1) )
198 if( fdum==0.d0 )
return
202 coordsys%CoordSys(1,:) = ff1
204 fdum = dsqrt( dot_product(ff3, ff3) )
205 if( fdum==0.d0 )
return
206 coordsys%CoordSys(3,:) = ff3/fdum
208 call cross_product(coordsys%CoordSys(3,:), coordsys%CoordSys(1,:), coordsys%CoordSys(2,:) )
210 coordsys%CoordSys(1,:) = xyza
211 coordsys%CoordSys(2,:) = xyzb
215 coordsys%node_ID(3) = 0
218 coordsys%node_ID(2), coordsys%node_ID(3) )/=0 )
return
223 if( maxval(coordsys%node_ID(1:3)) > 10 .or. minval(coordsys%node_ID(1:3)) < 1 )
then
224 write(*,*)
"!ORIENTATION, DEFINITION=LOCAL_NODES needs three local node numbers (1-10)!"
225 write(
idbg,*)
"!ORIENTATION, DEFINITION=LOCAL_NODES needs three local node numbers (1-10)!"
231 if( coordsys%node_ID(3) == 0 )
then
233 if( nid/=0 .and. nid/=2 )
then
234 write(*,*)
"We cannot define coordinate system using nodes in other CPU!"
235 write(
idbg,*)
"We cannot define coordinate system using nodes in other CPU!"
240 if( nid/=0 .and. nid/=3 )
then
241 write(*,*)
"We cannot define coordinate system using nodes in other CPU!"
242 write(
idbg,*)
"We cannot define coordinate system using nodes in other CPU!"
254 integer(kind=kint) :: ctrl
261 write(*,*)
'### Error: Fail in read in INITIAL CONDITION definition : ' ,slot%first
262 write(
ilog,*)
'### Error: Fail in read in INITIAL CONDITION definition : ', slot%first
263 stop hecmw_exit_input
270 integer(kind=kint) :: ctrl
272 type(hecmwst_local_mesh) :: hecmesh
273 integer,
pointer :: grp_id(:), dof(:)
274 real(kind=kreal),
pointer :: temp(:)
275 character(len=HECMW_NAME_LEN),
pointer :: grp_id_name(:)
276 character(len=HECMW_NAME_LEN) :: data_fmt, ss
277 integer :: i,j,n, is, ie, gid, nid, rcode
281 ss =
'TEMPERATURE,VELOCITY,ACCELERATION '
284 cond%cond_name =
"temperature"
285 allocate( cond%intval(hecmesh%n_node) )
286 allocate( cond%realval(hecmesh%n_node) )
287 elseif( nid==2 )
then
288 cond%cond_name =
"velocity"
289 allocate( cond%intval(hecmesh%n_node) )
290 allocate( cond%realval(hecmesh%n_node) )
291 elseif( nid==3 )
then
292 cond%cond_name =
"acceleration"
293 allocate( cond%intval(hecmesh%n_node) )
294 allocate( cond%realval(hecmesh%n_node) )
304 allocate( temp(n), grp_id_name(n), grp_id(n), dof(n) )
306 write(ss,*) hecmw_name_len
308 write(data_fmt,
'(a,a,a)')
'S',trim(adjustl(ss)),
'R '
312 write(data_fmt,
'(a,a,a)')
'S',trim(adjustl(ss)),
'IR '
318 if(
associated(grp_id) )
deallocate( grp_id )
319 if(
associated(temp) )
deallocate( temp )
320 if(
associated(dof) )
deallocate( dof )
321 if(
associated(grp_id_name) )
deallocate( grp_id_name )
328 is = hecmesh%node_group%grp_index(gid-1) + 1
329 ie = hecmesh%node_group%grp_index(gid )
331 nid = hecmesh%node_group%grp_item(j)
332 cond%realval(nid) = temp(i)
333 cond%intval(nid) = dof(i)
337 if(
associated(grp_id) )
deallocate( grp_id )
338 if(
associated(temp) )
deallocate( temp )
339 if(
associated(dof) )
deallocate( dof )
340 if(
associated(grp_id_name) )
deallocate( grp_id_name )
349 integer(kind=kint) :: ctrl
350 integer(kind=kint) :: counter
352 integer(kind=kint) :: res, visual, neutral
354 integer(kind=kint) :: rcode
358 if( res == 1 ) p%PARAM%fg_result = 1
359 if( visual == 1 ) p%PARAM%fg_visual = 1
360 if( neutral == 1 ) p%PARAM%fg_neutral = 1
369 integer(kind=kint) :: ctrl
372 integer(kind=kint) :: rcode
385 integer(kind=kint) :: ctrl
388 integer(kind=kint) :: rcode, nout
394 p%SOLID%restart_nout= nout
395 p%DYN%restart_nout= nout
396 p%HEAT%restart_nout= nout
406 integer(kind=kint) :: ctrl
408 real(kind=kreal),
pointer :: val(:), table(:)
409 character(len=HECMW_NAME_LEN) :: name
410 integer :: nline, n, type_def, type_time, type_val, rcode
413 if( nline<=0 )
return
414 allocate( val(nline*4) )
415 allocate( table(nline*4) )
422 if(
associated(val) )
deallocate( val )
423 if(
associated(table) )
deallocate( table )
432 integer(kind=kint) :: ctrl
435 integer(kind=kint) :: rcode
448 integer(kind=kint) :: ctrl
451 integer(kind=kint) :: rcode
496 integer(kind=kint) :: ctrl
499 integer(kind=kint) :: rcode
503 p%PARAM%fric_cone_follow, p%PARAM%eps_fric_band )
514 integer(kind=kint) :: ctrl
517 integer(kind=kint) :: rcode, nid
518 character(len=HECMW_NAME_LEN) :: data_fmt
520 data_fmt =
'SOLUTION,MATERIAL '
532 integer(kind=kint) :: ctrl
542 write(*,*)
'### Error: Fail in read in AUTOINC_PARAM definition : ' , slot%first
543 write(
ilog,*)
'### Error: Fail in read in AUTOINC_PARAM definition : ', slot%first
544 stop hecmw_exit_input
553 integer(kind=kint) :: ctrl
563 write(*,*)
'### Error: Fail in read in CONVERG_PARAM definition : ' , slot%first
564 write(
ilog,*)
'### Error: Fail in read in CONVERG_PARAM definition : ', slot%first
565 stop hecmw_exit_input
574 integer(kind=kint) :: ctrl
584 write(*,*)
'### Error: Fail in read in TIME_POINTS definition : ' , slot%first
585 write(
ilog,*)
'### Error: Fail in read in TIME_POINTS definition : ', slot%first
586 stop hecmw_exit_input
595 integer(kind=kint) :: ctrl
605 write(*,*)
'### Error: Fail in read in CONTACT_PARAM definition : ' , slot%first
606 write(
ilog,*)
'### Error: Fail in read in CONTACT_PARAM definition : ', slot%first
607 stop hecmw_exit_input
616 integer(kind=kint) :: ctrl
621 integer(kind=kint) :: c_contact_if, n, i
629 c_contact_if = slot%first - 1
631 write(*,*)
'### Error: Fail in read in CONTACT_INTERFERENCE definition : ' , c_contact_if
632 write(
ilog,*)
'### Error: Fail in read in CONTACT_INTERFERENCE definition : ', c_contact_if
633 stop hecmw_exit_input
636 if( check_apply_contact_if(fstrparam%contact_if(c_contact_if+i), fstrsolid%contacts) /= 0)
then
637 write(*,*)
'### Error:(INTERFERENCE) Inconsistence of contact_pair in CONTACTS: ' , i+c_contact_if
638 write(
ilog,*)
'### Error:(INTERFERENCE) Inconsistence of contact_pair in CONTACTS: ', i+c_contact_if
639 stop hecmw_exit_model
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,...)
This module contains fstr control file data obtaining functions.
integer(kind=kint) function fstr_ctrl_get_contactparam(ctrl, contactparam)
Read in !CONTACT_PARAM !
integer(kind=kint) function fstr_ctrl_get_solution(ctrl, type, nlgeom)
Read in !SOLUTION.
integer(kind=kint) function fstr_ctrl_get_contact_if(ctrl, n, contact_if)
Read in contact interference.
integer(kind=kint) function fstr_get_autoinc(ctrl, aincparam)
Read in !AUTOINC_PARAM !
integer(kind=kint) function fstr_ctrl_get_amplitude(ctrl, nline, name, type_def, type_time, type_val, n, val, table)
Read in !AMPLITUDE.
integer(kind=kint) function fstr_ctrl_get_timepoints(ctrl, tp)
Read in !TIME_POINTS.
integer(kind=kint) function fstr_ctrl_get_solver(ctrl, method, precond, nset, iterlog, timelog, steplog, nier, iterpremax, nrest, nBFGS, scaling, dumptype, dumpexit, usejad, ncolor_in, mpc_method, estcond, method2, recyclepre, solver_opt, contact_elim, resid, sigma_diag, omega, thresh, filter, solver_ropt, loglevel, matvec_impl, precond_impl, recompute_residual)
Read in !SOLVER.
integer(kind=kint) function fstr_ctrl_get_echo(ctrl, echo)
Read in !ECHO.
integer(kind=kint) function fstr_ctrl_get_nonlinear_solver(ctrl, method)
Read in !NONLINEAR_SOLVER.
integer(kind=kint) function fstr_ctrl_get_convergparam(ctrl, cnvparam)
Read in !CONVERG_PARAM.
integer(kind=kint) function fstr_ctrl_get_contactalgo(ctrl, algo, augiter, conefollow, eps_fric_band)
Read in !CONTACT.
integer(kind=kint) function fstr_ctrl_get_mpc(ctrl, penalty)
Read in !MPC.
integer(kind=kint) function fstr_ctrl_get_write(ctrl, res, visual, femap)
Read in !WRITE.
This module contains control file data obtaining functions for static analysis.
integer(kind=kint) function fstr_ctrl_get_reftemp(ctrl, value)
Read in !REFTEMP.
This module contains auxiliary functions in calculation setup.
subroutine fstr_ctrl_err_stop
subroutine append_new_amplitude(amp, name, type_def, type_time, type_val, np, val, table)
Append new amplitude table at the end of existing amplitude tables.
This module contains auxiliary functions in calculation setup.
integer(kind=kint) function node_global_to_local(hecMESH, list, n)
subroutine node_grp_name_to_id_ex(hecMESH, header_name, n, grp_id_name, grp_ID)
This module provides subroutines to read the cards that go into fstr_param, and the cards that go int...
subroutine fstr_setup_converg_param(ctrl, P)
Read in !CONVERG_PARAM !
subroutine fstr_setup_echo(ctrl, P)
Read in !ECHO !
subroutine fstr_setup_contactalgo(ctrl, P)
Read in !CONTACT !
subroutine fstr_setup_restart(ctrl, P)
Read in !RESTART !
subroutine fstr_setup_mpc(ctrl, P)
Read in !MPC !
integer(kind=kint) function fstr_get_initial_condition(ctrl, cond, hecMESH)
Reads !INITIAL_CONDITION into cond. Returns 0, or nonzero for an error.
subroutine fstr_setup_output_sstype(ctrl, P)
Read in !OUTPUT_SSTYPE !
subroutine fstr_setup_contact_interference(ctrl, P)
Read in !CONTACT_INTERFERENCE !
subroutine fstr_setup_amplitude(ctrl, P)
Read in !AMPLITUDE !
subroutine fstr_setup_solution(ctrl, P)
Read in !SOLUTION !
subroutine fstr_setup_time_points(ctrl, P)
Read in !TIME_POINTS !
subroutine fstr_setup_version(ctrl, P)
Read in !VERSION !
subroutine fstr_setup_contact_param(ctrl, P)
Read in !CONTACT_PARAM !
subroutine fstr_setup_autoinc_param(ctrl, P)
Read in !AUTOINC_PARAM !
subroutine fstr_setup_write(ctrl, counter, P)
Read in !WRITE !
subroutine fstr_setup_initial_condition(ctrl, P)
Read in !INITIAL_CONDITION.
subroutine fstr_setup_nonlinear_solver(ctrl, P)
Read in !NONLINEAR_SOLVER !
integer function fstr_get_orientation(ctrl, hecMESH, coordsys)
Reads !ORIENTATION into coordsys. Returns 0, or -1 for an error.
subroutine fstr_setup_reftemp(ctrl, P)
Read in !REFTEMP !
subroutine fstr_setup_solver(ctrl, P)
Read in !SOLVER !
subroutine fstr_setup_orientation(ctrl, P)
Read in !ORIENTATION.
This module defines common data and basic structures for analysis.
integer(kind=kint), parameter idbg
integer(kind=kint) opsstype
integer(kind=kint), parameter ilog
FILE HANDLER.
type(tinitialcondition), dimension(:), pointer, save g_initialcnd
This module provides aux functions.
subroutine cross_product(v1, v2, vn)
Places of a card in its sequence, from first to last. A card counted one by one has one place (first ...
Package of all data needs to initialize.
FSTR INNER CONTROL PARAMETERS (fstrPARAM)