23 integer(kind=i_kind) :: status_code
25 real(kind=
dp) :: start_time__s
27 real(kind=
dp) :: end_time__s
29 integer(kind=i_kind) :: solver_flag
31 integer(kind=i_kind) :: num_steps
33 integer(kind=i_kind) :: rhs_evals
35 integer(kind=i_kind) :: ls_setups
37 integer(kind=i_kind) :: error_test_fails
39 integer(kind=i_kind) :: nls_iters
41 integer(kind=i_kind) :: nls_convergence_fails
43 integer(kind=i_kind) :: dls_jac_evals
45 integer(kind=i_kind) :: dls_rhs_evals
47 real(kind=
dp) :: last_time_step__s
49 real(kind=
dp) :: next_time_step__s
51 integer(kind=i_kind) :: jac_eval_fails
53 integer(kind=i_kind) :: rhs_evals_total
55 integer(kind=i_kind) :: jac_evals_total
57 real(kind=
dp) :: rhs_time__s
59 real(kind=
dp) :: jac_time__s
61 real(kind=
dp) :: max_loss_precision
65 logical :: debug_out = .false.
67 logical :: eval_jac = .false.
87 integer(kind=i_kind),
optional :: file_unit
89 integer(kind=i_kind) :: f_unit
93 if(
present( file_unit ) ) f_unit = file_unit
95 write(f_unit,*)
"Status code: ", this%status_code
96 write(f_unit,*)
"Integration start time [s]: ", this%start_time__s
97 write(f_unit,*)
"Integration end time [s]: ", this%end_time__s
98 write(f_unit,*)
"Last solver flag: ", this%solver_flag
99 write(f_unit,*)
"Number of steps: ", this%num_steps
100 write(f_unit,*)
"Right-hand side evals: ", this%RHS_evals
101 write(f_unit,*)
"Linear solver setups: ", this%LS_setups
102 write(f_unit,*)
"Error test failures: ", this%error_test_fails
103 write(f_unit,*)
"Non-Linear solver iterations:", this%NLS_iters
104 write(f_unit,*)
"Non-Linear convergence fails:", this%NLS_convergence_fails
105 write(f_unit,*)
"DLS Jacobian evals: ", this%DLS_Jac_evals
106 write(f_unit,*)
"DLS Right-hand side evals: ", this%DLS_RHS_evals
107 write(f_unit,*)
"Last time step [s]: ", this%last_time_step__s
108 write(f_unit,*)
"Next time step [s]: ", this%next_time_step__s
109 write(f_unit,*)
"Maximum loss of precision ", this%max_loss_precision
111 write(f_unit,*)
"Output debugging info: ", this%debug_out
112 write(f_unit,*)
"Evaluate Jacobian: ", this%eval_Jac
113 if (this%eval_Jac)
then
114 write(f_unit,*)
"Jacobian evaluation failures:", this%Jac_eval_fails
128 integer(kind=i_kind),
intent(in) :: new_value
130 this%status_code = new_value
131 this%start_time__s = real( new_value, kind=
dp )
132 this%end_time__s = real( new_value, kind=
dp )
133 this%solver_flag = new_value
134 this%num_steps = new_value
135 this%RHS_evals = new_value
136 this%LS_setups = new_value
137 this%error_test_fails = new_value
138 this%NLS_iters = new_value
139 this%NLS_convergence_fails = new_value
140 this%DLS_Jac_evals = new_value
141 this%DLS_RHS_evals = new_value
142 this%last_time_step__s = real( new_value, kind=
dp )
143 this%next_time_step__s = real( new_value, kind=
dp )
144 this%Jac_eval_fails = new_value
145 this%max_loss_precision = new_value
integer, parameter dp
Kind of a double precision real number.
integer, parameter i_kind
Kind of an integer.
The solver_stats_t type and associated subroutines.
subroutine do_print(this, file_unit)
Print the solver statistics.
subroutine assignvalue(this, new_value)
Assign a value to all members of solver stats.