1 | MODULE isfnxt |
---|
2 | |
---|
3 | USE isf |
---|
4 | USE isfutils |
---|
5 | |
---|
6 | USE dom_oce |
---|
7 | USE in_out_manager |
---|
8 | |
---|
9 | IMPLICIT NONE |
---|
10 | |
---|
11 | PRIVATE |
---|
12 | |
---|
13 | PUBLIC isf_dynnxt !, isf_tranxt_mlt, isf_dynnxt_cpl, isf_tranxt_cpl |
---|
14 | |
---|
15 | CONTAINS |
---|
16 | |
---|
17 | SUBROUTINE isf_dynnxt ( pcoef ) |
---|
18 | !!---------------------------------------------------------------------- |
---|
19 | REAL(wp), INTENT(in ) :: pcoef ! atfp * rdt * r1_rau0 |
---|
20 | !!---------------------------------------------------------------------- |
---|
21 | ! |
---|
22 | ! ice shelf cavity |
---|
23 | IF ( ln_isfcav_mlt ) CALL isf_dynnxt_mlt(misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav, fwfisf_cav, fwfisf_cav_b, pcoef) |
---|
24 | ! |
---|
25 | ! ice shelf parametrised |
---|
26 | IF ( ln_isfpar_mlt ) CALL isf_dynnxt_mlt(misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par, fwfisf_par, fwfisf_par_b, pcoef) |
---|
27 | ! |
---|
28 | ! ice sheet coupling |
---|
29 | !IF ( ln_iscpl_hsb ) CALL isf_dynnxt_cpl(...zcoef) |
---|
30 | ! |
---|
31 | END SUBROUTINE isf_dynnxt |
---|
32 | |
---|
33 | SUBROUTINE isf_dynnxt_mlt ( ktop, kbot, phtbl, pfrac, pfwf, pfwf_b, pcoef ) |
---|
34 | !atfp * rdt * r1_rau0 |
---|
35 | !!---------------------------------------------------------------------- |
---|
36 | INTEGER , DIMENSION(jpi,jpj), INTENT(in ) :: ktop , kbot ! top and bottom level of tbl |
---|
37 | REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: pfrac, phtbl ! fraction of bottom cell included in tbl, tbl thickness |
---|
38 | REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: pfwf , pfwf_b ! now/before fwf |
---|
39 | REAL(wp), INTENT(in ) :: pcoef ! atfp * rdt * r1_rau0 |
---|
40 | !!---------------------------------------------------------------------- |
---|
41 | INTEGER :: ji,jj,jk |
---|
42 | REAL(wp), DIMENSION(jpi,jpj) :: zfwfinc |
---|
43 | !!---------------------------------------------------------------------- |
---|
44 | ! |
---|
45 | ! compute fwf conservation correction |
---|
46 | zfwfinc(:,:) = pcoef * ( pfwf_b(:,:) - pfwf(:,:) ) / phtbl(:,:) |
---|
47 | ! |
---|
48 | ! add the in depth increment |
---|
49 | DO jk = 1, jpkm1 |
---|
50 | DO jj = 1, jpj |
---|
51 | DO ji = 1, jpi |
---|
52 | IF( ktop(ji,jj) <= jk .AND. jk < kbot(ji,jj) ) THEN |
---|
53 | e3t_b(ji,jj,jk) = e3t_b(ji,jj,jk) - zfwfinc(ji,jj) * e3t_n(ji,jj,jk) |
---|
54 | ELSEIF ( jk == kbot(ji,jj) ) THEN |
---|
55 | e3t_b(ji,jj,jk) = e3t_b(ji,jj,jk) - zfwfinc(ji,jj) * e3t_n(ji,jj,jk) * pfrac(ji,jj) |
---|
56 | ENDIF |
---|
57 | END DO |
---|
58 | END DO |
---|
59 | END DO |
---|
60 | ! |
---|
61 | END SUBROUTINE isf_dynnxt_mlt |
---|
62 | |
---|
63 | END MODULE isfnxt |
---|