9 subroutine fstr_solve_heat(hecMESH, hecMAT, fstrRESULT, fstrPARAM, fstrHEAT)
15 integer(kind=kint) :: ISTEP
16 type(hecmwst_local_mesh) :: hecMESH
17 type(hecmwst_matrix) :: hecMAT
18 type(hecmwst_result_data) :: fstrRESULT
22 integer(kind=kint) :: total_step, restart_step_num
23 real(kind=kreal) :: start_time, end_time
28 if(fstrheat%restart_nout < 0)
then
30 end_time = fstrheat%STEP_EETIME(restart_step_num)
31 if( (end_time - start_time) / end_time < 1.d-12 )
then
32 restart_step_num = restart_step_num + 1
41 do istep = restart_step_num, fstrheat%STEPtot
42 fstrheat%is_steady = 0
43 if(fstrheat%STEP_DLTIME(istep) <= 0.0d0) fstrheat%is_steady = 1
45 if(hecmesh%my_rank == 0)
then
46 write(
imsg,
"(a,i8,a,i8)")
"* Current step / Total step: ", istep,
"/", fstrheat%STEPtot
47 write(
imsg,
"(a,i8)")
"* max iteration at each step: ", fstrparam%ITMAX(istep)
48 if(fstrheat%is_steady == 1)
then
49 write(
imsg,
"(a)")
"* Steady state analysis"
51 write(
imsg,
"(a)")
"* Transient anslysis"
55 call heat_solve_tran(hecmesh, hecmat, fstrresult, fstrparam, fstrheat, istep, total_step, start_time)