10 LOGICAL,
ALLOCATABLE :: implicit_flag(:)
12 CHARACTER(LEN=20) :: phase1_name
13 CHARACTER(LEN=20) :: phase2_name
38 ALLOCATE( implicit_flag(n_eqns) )
40 implicit_flag(1:n_eqns) = .false.
41 implicit_flag(2) = .true.
43 n_nh = count( implicit_flag )
64 REAL*8,
INTENT(IN) :: bj
65 REAL*8,
INTENT(IN),
OPTIONAL :: r_qj(n_vars)
66 COMPLEX*16,
INTENT(IN),
OPTIONAL :: c_qj(n_vars)
68 COMPLEX*16 :: qj(n_vars)
70 IF ( present(c_qj) )
THEN
80 h = qj(1) - dcmplx( bj , 0.d0 )
84 IF (
REAL( h ) .GT. eps_sing ** 0.25d0 ) then
90 u = dsqrt(2.d0) * h * qj(2) / cdsqrt( h**4 + dcmplx(eps_sing,0.d0) )
109 REAL*8,
INTENT(IN) :: qj(n_vars)
110 REAL*8,
INTENT(IN) :: bj
111 REAL*8,
INTENT(OUT) :: vel_min(n_vars) , vel_max(n_vars)
113 REAL*8 :: h_temp , u_temp
117 vel_min(1:n_eqns) =
REAL(u) - dsqrt( grav *
REAL(h) )
118 vel_max(1:n_eqns) =
REAL(u) + dsqrt( grav *
REAL(h) )
133 REAL*8,
INTENT(IN) :: qj(n_vars)
134 REAL*8,
INTENT(IN) :: bj
135 REAL*8,
INTENT(OUT) :: vel_min(n_vars) , vel_max(n_vars)
137 REAL*8 :: h_temp , u_temp
141 IF ( h_temp .NE. 0.d0 )
THEN
143 u_temp = qj(2) / h_temp
151 vel_min(1:n_eqns) =
REAL(u_temp) - dsqrt( grav *
REAL(h_temp) )
152 vel_max(1:n_eqns) =
REAL(u_temp) + dsqrt( grav *
REAL(h_temp) )
181 REAL*8,
INTENT(IN) :: qc(n_vars)
182 REAL*8,
INTENT(IN) :: b
183 REAL*8,
INTENT(OUT) :: qp(n_vars)
211 REAL*8,
INTENT(IN) :: qp(n_vars)
212 REAL*8,
INTENT(IN) :: b
213 REAL*8,
INTENT(OUT) :: qc(n_vars)
215 REAL*8 :: r_hb !> batimetry + height
216 REAL*8 :: r_u !> velocity
222 qc(2) = ( r_hb - b ) * r_u
245 REAL*8,
INTENT(IN) :: qc(n_vars)
246 REAL*8,
INTENT(IN) :: b
247 REAL*8,
INTENT(OUT) :: qp(n_vars)
276 REAL*8,
INTENT(IN) :: qp(n_vars)
277 REAL*8,
INTENT(IN) :: b
278 REAL*8,
INTENT(OUT) :: qc(n_vars)
280 REAL*8 :: r_h !> batimetry + height
281 REAL*8 :: r_u !> velocity
309 REAL*8,
INTENT(IN) :: bj
310 COMPLEX*16,
INTENT(IN),
OPTIONAL :: c_qj(n_vars)
311 COMPLEX*16,
INTENT(OUT),
OPTIONAL :: c_flux(n_eqns)
312 REAL*8,
INTENT(IN),
OPTIONAL :: r_qj(n_vars)
313 REAL*8,
INTENT(OUT),
OPTIONAL :: r_flux(n_eqns)
315 COMPLEX*16 :: qj(n_vars)
316 COMPLEX*16 :: flux(n_eqns)
320 IF ( present(c_qj) .AND. present(c_flux) )
THEN
324 ELSEIF ( present(r_qj) .AND. present(r_flux) )
THEN
328 qj(i) = dcmplx( r_qj(i) )
334 WRITE(*,*)
'Constitutive, eval_fluxes: problem with arguments'
342 IF((qj(1)-bj).GT.10.d0**(-8))
THEN
344 flux(2) = qj(2)**2.d0 / ( qj(1) - bj ) + 0.5d0 * grav * ( qj(1) - bj ) ** 2.d0
352 IF ( present(c_qj) .AND. present(c_flux) )
THEN
356 ELSEIF ( present(r_qj) .AND. present(r_flux) )
THEN
358 r_flux =
REAL( flux )
379 r_qj , r_nh_term_impl )
384 REAL*8,
INTENT(IN) :: bj
385 REAL*8,
INTENT(IN) :: bprimej
387 COMPLEX*16,
INTENT(IN),
OPTIONAL :: c_qj(n_vars)
388 COMPLEX*16,
INTENT(OUT),
OPTIONAL :: c_nh_term_impl(n_eqns)
389 REAL*8,
INTENT(IN),
OPTIONAL :: r_qj(n_vars)
390 REAL*8,
INTENT(OUT),
OPTIONAL :: r_nh_term_impl(n_eqns)
392 COMPLEX*16 :: qj(n_vars)
394 COMPLEX*16 :: nh_term(n_eqns)
396 COMPLEX*16 :: relaxation_term(n_eqns)
397 COMPLEX*16 :: heat , drag
398 COMPLEX*16 :: vel_term
400 COMPLEX*16 :: forces_term(n_eqns)
404 IF ( present(c_qj) .AND. present(c_nh_term_impl) )
THEN
408 ELSEIF ( present(r_qj) .AND. present(r_nh_term_impl) )
THEN
412 qj(i) = dcmplx( r_qj(i) )
418 WRITE(*,*)
'Constitutive, eval_fluxes: problem with arguments'
424 relaxation_term(1:n_eqns) = dcmplx(0.d0)
427 forces_term(1:n_eqns) = dcmplx(0.d0)
429 nh_term = relaxation_term + forces_term
431 IF ( present(c_qj) .AND. present(c_nh_term_impl) )
THEN
433 c_nh_term_impl = nh_term
435 ELSEIF ( present(r_qj) .AND. present(r_nh_term_impl) )
THEN
437 r_nh_term_impl =
REAL( nh_term )
457 REAL*8,
INTENT(IN) :: bj
458 REAL*8,
INTENT(IN) :: bprimej
460 REAL*8,
INTENT(IN) :: qj(n_eqns)
461 REAL*8,
INTENT(OUT) :: expl_forces_term(n_eqns)
463 expl_forces_term(1:n_eqns) = 0.d0
467 expl_forces_term(2) = grav * h * bprimej
470 expl_forces_term(2) = expl_forces_term(2) + ( 0.001 / (1.d0+10.d0*h) ) * u
subroutine qc_to_qp2(qc, B, qp)
Conservative to 2nd set of physical variables.
subroutine init_problem_param
Initialization of relaxation flags.
subroutine eval_explicit_forces(Bj, Bprimej, qj, expl_forces_term)
Explicit Forces term.
subroutine qp2_to_qc(qp, B, qc)
From 2nd set of physical to conservative variables.
subroutine qp_to_qc(qp, B, qc)
Physical to conservative variables.
subroutine eval_fluxes(Bj, c_qj, r_qj, c_flux, r_flux)
Hyperbolic Fluxes.
subroutine qc_to_qp(qc, B, qp)
Conservative to physical variables.
subroutine eval_local_speeds2(qj, Bj, vel_min, vel_max)
Local Characteristic speeds.
subroutine eval_nonhyperbolic_terms(Bj, Bprimej, c_qj, c_nh_term_impl, r_qj, r_nh_term_impl)
Non-Hyperbolic terms.
subroutine phys_var(Bj, r_qj, c_qj)
Physical variables.
subroutine eval_local_speeds(qj, Bj, vel_min, vel_max)
Local Characteristic speeds.