wake_dadv Subroutine

public subroutine wake_dadv(klon, klev, dtime, ph, ppi, wk_adv, kupper, deltomg, dp_deltomg, sigmaw, dsigspread, thw, thx, qw, qx, d_deltat_dadv, d_deltaq_dadv, d_tb_dadv, d_qb_dadv)

Uses

  • proc~~wake_dadv~~UsesGraph proc~wake_dadv wake_dadv module~lmdz_wake_ini lmdz_wake_ini proc~wake_dadv->module~lmdz_wake_ini
    entr_s(i,k) = dsigspread(i) - sigmaw(i)*(1.-sigmaw(i))*(deltomg(i,k+1)-deltomg(i,k)) / &
                 (ph(i,k)-ph(i,k+1))

print *,'dadv, k, dp_deltomg(i,k), (deltomg(i,k)-deltomg(i,k+1))/(ph(i,k)-ph(i,k+1)) ', & k, dp_deltomg(i,k), (deltomg(i,k)-deltomg(i,k+1))/(ph(i,k)-ph(i,k+1))

Building the tridiagonal matrix printing the tridiagonal matrix ! First row k = 1 print 1789, k, aa11(1,1), aa12(1,1), bb11(1,1), bb12(1,1) print 1789, k, aa21(1,1), aa22(1,1), bb21(1,1), bb22(1,1) 1789 FORMAT(1X, I3, 3(4X, 2E13.5)) coef = dtime/(ph(1,k)-ph(1,k+1)) print *,'rr22(1), coef, dsigspread(1), sigmaw(1), deltomg(1,1), deltomg(1,2) ', & rr22(1), coef, dsigspread(1), sigmaw(1), deltomg(1,1), deltomg(1,2)

! Rows 2 to klev-1 DO k = 2, klev-1 print 1789, k, cc11(1,k), cc12(1,k), aa11(1,k), aa12(1,k), bb11(1,k), bb12(1,k) print 1789, k, cc21(1,k), cc22(1,k), aa21(1,k), aa22(1,k), bb21(1,k), bb22(1,k) coef = dtime/(ph(1,k)-ph(1,k+1)) print *,'rr22(1), coef, dsigspread(1), sigmaw(1), deltomg(1,k), deltomg(1,k+1) ', & rr22(1), coef, dsigspread(1), sigmaw(1), deltomg(1,k), deltomg(1,k+1) ENDDO

! Row klev print 1789, klev, cc11(1,klev), cc12(1,klev), aa11(1,klev), aa12(1,klev) print 1789, klev, cc21(1,klev), cc22(1,klev), aa21(1,klev), aa22(1,klev) coef = dtime/(ph(1,klev)-ph(1,klev+1)) print *,'rr22(1), coef, dsigspread(1), sigmaw(1), deltomg(1,klev) ', & rr22(1), coef, dsigspread(1), sigmaw(1), deltomg(1,klev)

Downward loop

Upward loop

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! Verification de l'inversion !!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

DO i = 1,klon
    xt1inv(i,1) = aa11(i,1)*th1(i,1) + aa12(i,1)*th2(i,1) + bb11(i,1)*th1(i,2) + bb12(i,1)*th2(i,2)
    xt2inv(i,1) = aa21(i,1)*th1(i,1) + aa22(i,1)*th2(i,1) + bb21(i,1)*th1(i,2) + bb22(i,1)*th2(i,2)
    xq1inv(i,1)  = aa11(i,1)*q1(i,1)  + aa12(i,1)*q2(i,1)  + bb11(i,1)*q1(i,2)  + bb12(i,1)*q2(i,2) 
    xq2inv(i,1)  = aa21(i,1)*q1(i,1)  + aa22(i,1)*q2(i,1)  + bb21(i,1)*q1(i,2)  + bb22(i,1)*q2(i,2) 
ENDDO

  DO k = 2, klev-1
    DO i = 1,klon
    xt1inv(i,k) = aa11(i,k)*th1(i,k) + aa12(i,k)*th2(i,k) + bb11(i,k)*th1(i,k+1) + bb12(i,k)*th2(i,k+1) &
                                                          + cc11(i,k)*th1(i,k-1) + cc12(i,k)*th2(i,k-1)
    xt2inv(i,k) = aa21(i,k)*th1(i,k) + aa22(i,k)*th2(i,k) + bb21(i,k)*th1(i,k+1) + bb22(i,k)*th2(i,k+1) &
                                                          + cc21(i,k)*th1(i,k-1) + cc22(i,k)*th2(i,k-1)
    xq1inv(i,k)  = aa11(i,k)*q1(i,k)  + aa12(i,k)*q2(i,k)  + bb11(i,k)*q1(i,k+1)  + bb12(i,k)*q2(i,k+1)  &
                                                          + cc11(i,k)*q1(i,k-1)  + cc12(i,k)*q2(i,k-1)
    xq2inv(i,k)  = aa21(i,k)*q1(i,k)  + aa22(i,k)*q2(i,k)  + bb21(i,k)*q1(i,k+1)  + bb22(i,k)*q2(i,k+1)  &
                                                          + cc21(i,k)*q1(i,k-1)  + cc22(i,k)*q2(i,k-1)
    ENDDO
  ENDDO

DO i = 1,klon
    xt1inv(i,klev) = aa11(i,klev)*th1(i,klev) + aa12(i,klev)*th2(i,klev) + cc11(i,klev)*th1(i,klev-1) + cc12(i,klev)*th2(i,klev-1)
    xt2inv(i,klev) = aa21(i,klev)*th1(i,klev) + aa22(i,klev)*th2(i,klev) + cc21(i,klev)*th1(i,klev-1) + cc22(i,klev)*th2(i,klev-1)
    xq1inv(i,klev)  = aa11(i,klev)*q1(i,klev)  + aa12(i,klev)*q2(i,klev)  + cc11(i,klev)*q1(i,klev-1)  + cc12(i,klev)*q2(i,klev-1) 
    xq2inv(i,klev)  = aa21(i,klev)*q1(i,klev)  + aa22(i,klev)*q2(i,klev)  + cc21(i,klev)*q1(i,klev-1)  + cc22(i,klev)*q2(i,klev-1) 
ENDDO

DO k = 1, 20
  IF (abs(xt1inv(1,k)-xt1(1,k)) .GT. 1.e-15*xt1(1,k) ) THEN
    print *,'wake_dadv, k, xt1inv(1,k), xt1(1,k), xt1inv(1,k)-xt1(1,k) ', &
                        k, xt1inv(1,k), xt1(1,k), xt1inv(1,k)-xt1(1,k)
  ENDIF
  IF (abs(xt2inv(1,k)-xt2(1,k)) .GT. 1.e-15*xt2(1,k) ) THEN
    print *,'wake_dadv, k, xt2inv(1,k), xt2(1,k), xt2inv(1,k)-xt2(1,k) ', &
                        k, xt2inv(1,k), xt2(1,k), xt2inv(1,k)-xt2(1,k)
  ENDIF
  IF (abs(xq1inv(1,k)-xq1(1,k)) .GT. 1.e-15*xq1(1,k) ) THEN
    print *,'wake_dadv, k, xq1inv(1,k), xq1(1,k), xq1inv(1,k)-xq1(1,k) ', &
                        k, xq1inv(1,k), xq1(1,k), xq1inv(1,k)-xq1(1,k)
  ENDIF
  IF (abs(xq2inv(1,k)-xq2(1,k)) .GT. 1.e-15*xq2(1,k) ) THEN
    print *,'wake_dadv, k, xq2inv(1,k), xq2(1,k), xq2inv(1,k)-xq2(1,k) ', &
                      k, xq2inv(1,k), xq2(1,k), xq2inv(1,k)-xq2(1,k)
  ENDIF
ENDDO

! nrlmd

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: klon
integer, intent(in) :: klev
real, intent(in) :: dtime
real, intent(in), DIMENSION (klon, klev+1) :: ph
real, intent(in), DIMENSION (klon, klev) :: ppi
logical, intent(in), DIMENSION (klon) :: wk_adv
integer, intent(in), DIMENSION (klon) :: kupper
real, intent(in), DIMENSION (klon, klev) :: deltomg
real, intent(in), DIMENSION (klon, klev) :: dp_deltomg
real, intent(in), DIMENSION (klon) :: sigmaw
real, intent(in), DIMENSION (klon) :: dsigspread
real, intent(in), DIMENSION (klon, klev) :: thw
real, intent(in), DIMENSION (klon, klev) :: thx
real, intent(in), DIMENSION (klon, klev) :: qw
real, intent(in), DIMENSION (klon, klev) :: qx
real, intent(out), DIMENSION (klon, klev) :: d_deltat_dadv
real, intent(out), DIMENSION (klon, klev) :: d_deltaq_dadv
real, intent(out), DIMENSION (klon, klev) :: d_tb_dadv
real, intent(out), DIMENSION (klon, klev) :: d_qb_dadv

Called by

proc~~wake_dadv~~CalledByGraph proc~wake_dadv wake_dadv proc~wake2 wake2 proc~wake2->proc~wake_dadv proc~wake3 wake3 proc~wake3->proc~wake_dadv proc~calwake calwake proc~calwake->proc~wake2 proc~calwake->proc~wake3 proc~physiq physiq proc~physiq->proc~calwake proc~old_lmdz1d old_lmdz1d proc~old_lmdz1d->proc~physiq proc~call_physiq call_physiq proc~call_physiq->proc~physiq proc~call_physiq~2 call_physiq proc~call_physiq~2->proc~physiq proc~scm scm proc~scm->proc~physiq program~lmdz1d lmdz1d program~lmdz1d->proc~old_lmdz1d program~lmdz1d->proc~scm proc~calfis calfis proc~calfis->proc~call_physiq proc~leapfrog leapfrog proc~leapfrog->proc~calfis program~gcm~2 gcm program~gcm~2->proc~leapfrog

Contents