23 SUBROUTINE pdc(run_name)
29 USE current_module, ONLY: r, r0, r_old, r_new, u, h_old, h_new, h,t
30 USE solver_module, ONLY: dr, dr0, dr_old, f, ftemp, rhs, rhstemp
52 CHARACTER(LEN=80),
INTENT(IN) :: run_name
54 CHARACTER(LEN=4) :: idx_string
83 a_rk(2,1) = 1.d0 / 5.d0
85 a_rk(3,1) = 3.d0 / 40.d0
86 a_rk(3,2) = 9.d0 / 40.d0
88 a_rk(4,1) = 3.d0 / 10.d0
89 a_rk(4,2) = -9.d0 / 10.d0
90 a_rk(4,3) = 6.d0 / 5.d0
92 a_rk(5,1) = -11.d0 / 54.d0
93 a_rk(5,2) = 5.d0 / 2.d0
94 a_rk(5,3) = -70.d0 / 27.d0
95 a_rk(5,4) = 35.d0 / 27.d0
97 a_rk(6,1) = 1631.d0 / 55296.d0
98 a_rk(6,2) = 175.d0 / 512.d0
99 a_rk(6,3) = 575.d0 / 13824.d0
100 a_rk(6,4) = 44275.d0 / 110592.d0
101 a_rk(6,5) = 253.d0 / 4096.d0
105 c_rk(2) = 1.d0 / 5.d0
106 c_rk(3) = 3.d0 / 10.d0
107 c_rk(4) = 3.d0 / 5.d0
109 c_rk(6) = 7.d0 / 8.d0
115 b_rk(1) = 37.d0 / 378.d0
117 b_rk(3) = 250.d0 / 621.d0
118 b_rk(4) = 125.d0 / 594.d0
120 b_rk(6) = 512.d0 / 1771.d0
126 b4_rk(1) = 2825.d0 / 27648.d0
128 b4_rk(3) = 18575.d0 / 48384.d0
129 b4_rk(4) = 13525.d0 / 55296.d0
130 b4_rk(5) = 277.d0 / 14336.d0
131 b4_rk(6) = 1.d0 / 4.d0
179 CALL
rate( rhs_rk(1,:) )
188 rk_loop:
DO i_rk=2,n_rk
194 rhs = rhs + a_rk(i_rk,i_sum) * rhs_rk(i_sum,:)
198 CALL
marching( f_stepold , f_rk , rhs , dr )
200 dr_rk = c_rk(i_rk)*dr
206 IF ( ( beta < alpha) .OR. ( h < 0 ) .OR. ( u < 0 ) .OR. &
207 ( minval(f) < 0 ) )
THEN
221 CALL
rate( rhs_rk(i_rk,:) )
231 rhs = rhs + b_rk(i_rk) * rhs_rk(i_rk,:)
232 rhs4 = rhs4 + b4_rk(i_rk) * rhs_rk(i_rk,:)
244 IF ( ( beta < alpha) .OR. ( h < 0 ) .OR. ( u < 0 ) .OR. &
245 ( minval(f) < 0 ) )
THEN
266 f_err(:) = dr * ( rhs(:) - rhs4(:) )
268 err_check = maxval( abs(f_err) / ( eps_abs + eps_rel * abs(f) ) )
270 dr = min( dr0 , dr/err_check**0.2d0 )
274 IF ( ri .gt. 1.d0 .and. ri_old .lt. 1.d0)
THEN
276 WRITE(*,*)
'hydraulicjump'
285 IF ( ri_new < 1.d0 )
THEN
297 IF ( ( (beta - alpha) < 1.d-5) .OR. ( dr .LE. 1.d-11 ) )
THEN
subroutine initialize_current
Initialising current This subroutine allocates conditions at flow source to those assigned in input f...
subroutine rate(rhs_)
Right hand side equations This subroutine contains the right-hand side of the equations that are comp...
subroutine initialize_particles
Allocating particles variables This subroutine allocates the variables defining the particle sediment...
subroutine marching(fold, fnew, rat, delta_r)
Marching r one step.
Current module This module contains descriptors for the initial conditions of the flow...
Mixture module This module contains all the variables required for describing and calculating the cha...
subroutine compute_mixture
Computing conditions within mixture This subroutine calculates the characteristics of the mixture by ...
PDC flow model This module calls subroutines required from other modules for solving the model and de...
Solver Module This module contains the differential equations that are solved at each iteration...
subroutine unlump(f_)
Unlumping variable Lumped variables defined in subroutine 'lump' are unlumped to calculate physical v...
subroutine lump(f_)
Lump variables Variables are grouped together to calculate the lumped variables.
Particles module This module contains the procedures and the variables related to the solid particles...
subroutine pdc(run_name)
PDC run_name This subroutine calls all subroutines required from other modules for solving the model...
environment module This module contains all the variables related to the background environmental con...
subroutine zmet
Meteorological conditions This subroutine is used to calculate atmospheric density, alpha.