91 real(kind=dp),
intent(in) :: tol
96 call this%u_old%init(this%case%fluid%u%dof)
97 call this%v_old%init(this%case%fluid%v%dof)
98 call this%w_old%init(this%case%fluid%w%dof)
99 call this%p_old%init(this%case%fluid%p%dof)
102 if (
allocated(this%case%scalar))
then
103 this%have_scalar = .true.
104 call this%s_old%init(this%case%scalar%s%dof)
128 real(kind=rp),
intent(in) :: t
129 integer,
intent(in) :: tstep
131 real(kind=rp),
dimension(5) :: normed_diff
132 type(field_t),
pointer :: u, v, w, p, s
135 if (this%case%fluid%freeze)
return
143 u => this%case%fluid%u
144 v => this%case%fluid%v
145 w => this%case%fluid%w
146 p => this%case%fluid%p
148 if (this%have_scalar)
then
149 s => this%case%scalar%s
155 call field_sub2(this%u_old, u)
156 call field_sub2(this%v_old, v)
157 call field_sub2(this%w_old, w)
158 call field_sub2(this%p_old, p)
159 if (this%have_scalar)
then
160 call field_sub2(this%s_old, s)
165 normed_diff(1) = field_glsc2(this%u_old, this%u_old)
166 normed_diff(2) = field_glsc2(this%v_old, this%v_old)
167 normed_diff(3) = field_glsc2(this%w_old, this%w_old)
168 normed_diff(4) = field_glsc2(this%p_old, this%p_old)
169 if (this%have_scalar)
then
170 normed_diff(5) = field_glsc2(this%s_old, this%s_old)
172 normed_diff(5) = 0.0_rp
178 if (maxval(normed_diff) .gt. this%tol)
then
179 call field_copy(this%u_old, u)
180 call field_copy(this%v_old, v)
181 call field_copy(this%w_old, w)
182 call field_copy(this%p_old, p)
183 if (this%have_scalar)
then
184 call field_copy(this%s_old, s)
188 this%case%fluid%freeze = .true.