Changeset 5561
- Timestamp:
- Feb 25, 2025, 7:15:18 PM (6 hours ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/Dust/checknanqfi.f90
r5354 r5561 1 1 SUBROUTINE checknanqfi(zq,qmin,qmax,comment) 2 2 USE dimphy 3 USE, intrinsic :: ieee_arithmetic4 3 IMPLICIT NONE 5 4 … … 17 16 DO i = 1, klon 18 17 ! IF (zq(i,k).GT.qmax .OR. zq(i,k).LT.qmin) THEN 19 IF (i eee_is_nan(zq(i,k))) THEN18 IF (isnan(zq(i,k))) THEN 20 19 jbad = jbad + 1 21 20 jadrs(jbad) = i -
LMDZ6/trunk/libf/phylmd/acama_gwd_rando_m.f90
r5512 r5561 5 5 6 6 USE clesphys_mod_h 7 IMPLICIT NONE 8 LOGICAL, SAVE :: gwd_reproductibilite_mpiomp=.true. 9 LOGICAL, SAVE :: firstcall = .TRUE. 7 implicit none 8 9 contains 10 11 SUBROUTINE ACAMA_GWD_rando(DTIME, pp, plat, tt, uu, vv, rot, & 12 zustr, zvstr, d_u, d_v,east_gwstress,west_gwstress) 13 14 ! Parametrization of the momentum flux deposition due to a discrete 15 ! number of gravity waves. 16 ! Author: F. Lott, A. de la Camara 17 ! July, 24th, 2014 18 ! Gaussian distribution of the source, source is vorticity squared 19 ! Reference: de la Camara and Lott (GRL, 2015, vol 42, 2071-2078 ) 20 ! Lott et al (JAS, 2010, vol 67, page 157-170) 21 ! Lott et al (JAS, 2012, vol 69, page 2134-2151) 22 23 ! ONLINE: 24 USE yoegwd_mod_h 25 USE yomcst_mod_h 26 use dimphy, only: klon, klev 27 use assert_m, only: assert 28 USE ioipsl_getin_p_mod, ONLY : getin_p 29 USE vertical_layers_mod, ONLY : presnivs 30 31 32 ! OFFLINE: 33 ! include "dimensions_mod.f90" 34 ! include "dimphy.h" 35 !END DIFFERENCE 36 37 ! 0. DECLARATIONS: 38 39 ! 0.1 INPUTS 40 REAL, intent(in)::DTIME ! Time step of the Physics 41 REAL, intent(in):: PP(:, :) ! (KLON, KLEV) Pressure at full levels 42 REAL, intent(in):: ROT(:,:) ! Relative vorticity 43 REAL, intent(in):: TT(:, :) ! (KLON, KLEV) Temp at full levels 44 REAL, intent(in):: UU(:, :) ! (KLON, KLEV) Zonal wind at full levels 45 REAL, intent(in):: VV(:, :) ! (KLON, KLEV) Merid wind at full levels 46 REAL, intent(in):: PLAT(:) ! (KLON) LATITUDE 47 48 ! 0.2 OUTPUTS 49 REAL, intent(out):: zustr(:), zvstr(:) ! (KLON) Surface Stresses 50 51 REAL, intent(inout):: d_u(:, :), d_v(:, :) 52 REAL, intent(inout):: east_gwstress(:, :) ! Profile of eastward stress 53 REAL, intent(inout):: west_gwstress(:, :) ! Profile of westward stress 54 ! (KLON, KLEV) tendencies on winds 55 56 ! O.3 INTERNAL ARRAYS 57 REAL BVLOW(klon) ! LOW LEVEL BV FREQUENCY 58 REAL ROTBA(KLON),CORIO(KLON) ! BAROTROPIC REL. VORTICITY AND PLANETARY 59 REAL UZ(KLON, KLEV + 1) 60 61 INTEGER II, JJ, LL 62 63 ! 0.3.0 TIME SCALE OF THE LIFE CYCLE OF THE WAVES PARAMETERIZED 64 65 REAL DELTAT 66 67 ! 0.3.1 GRAVITY-WAVES SPECIFICATIONS 68 69 INTEGER, PARAMETER:: NK = 2, NP = 2, NO = 2, NW = NK * NP * NO 70 INTEGER JK, JP, JO, JW 71 INTEGER, PARAMETER:: NA = 5 !number of realizations to get the phase speed 72 REAL KMIN, KMAX ! Min and Max horizontal wavenumbers 73 REAL CMIN, CMAX ! Min and Max absolute ph. vel. 74 REAL CPHA ! absolute PHASE VELOCITY frequency 75 REAL ZK(NW, KLON) ! Horizontal wavenumber amplitude 76 REAL ZP(NW, KLON) ! Horizontal wavenumber angle 77 REAL ZO(NW, KLON) ! Absolute frequency ! 78 79 ! Waves Intr. freq. at the 1/2 lev surrounding the full level 80 REAL ZOM(NW, KLON), ZOP(NW, KLON) 81 82 ! Wave EP-fluxes at the 2 semi levels surrounding the full level 83 REAL WWM(NW, KLON), WWP(NW, KLON) 84 85 REAL RUW0(NW, KLON) ! Fluxes at launching level 86 87 REAL RUWP(NW, KLON), RVWP(NW, KLON) 88 ! Fluxes X and Y for each waves at 1/2 Levels 89 90 INTEGER LAUNCH, LTROP ! Launching altitude and tropo altitude 91 92 REAL XLAUNCH ! Controle the launching altitude 93 REAL XTROP ! SORT of Tropopause altitude 94 REAL RUW(KLON, KLEV + 1) ! Flux x at semi levels 95 REAL RVW(KLON, KLEV + 1) ! Flux y at semi levels 96 97 REAL PRMAX ! Maximum value of PREC, and for which our linear formula 98 ! for GWs parameterisation apply 99 100 ! 0.3.2 PARAMETERS OF WAVES DISSIPATIONS 101 102 REAL RDISS, ZOISEC ! COEFF DE DISSIPATION, SECURITY FOR INTRINSIC FREQ 103 REAL CORSEC ! SECURITY FOR INTRINSIC CORIOLIS 104 REAL RUWFRT,SATFRT 105 106 ! 0.3.3 BACKGROUND FLOW AT 1/2 LEVELS AND VERTICAL COORDINATE 107 108 REAL H0 ! Characteristic Height of the atmosphere 109 REAL DZ ! Characteristic depth of the source! 110 REAL PR, TR ! Reference Pressure and Temperature 111 112 REAL ZH(KLON, KLEV + 1) ! Log-pressure altitude 113 114 REAL UH(KLON, KLEV + 1), VH(KLON, KLEV + 1) ! Winds at 1/2 levels 115 REAL PH(KLON, KLEV + 1) ! Pressure at 1/2 levels 116 REAL PSEC ! Security to avoid division by 0 pressure 117 REAL PHM1(KLON, KLEV + 1) ! 1/Press at 1/2 levels 118 REAL BV(KLON, KLEV + 1) ! Brunt Vaisala freq. (BVF) at 1/2 levels 119 REAL BVSEC ! Security to avoid negative BVF 120 121 REAL, DIMENSION(klev+1) ::HREF 122 LOGICAL, SAVE :: gwd_reproductibilite_mpiomp=.true. 123 LOGICAL, SAVE :: firstcall = .TRUE. 10 124 !$OMP THREADPRIVATE(firstcall,gwd_reproductibilite_mpiomp) 11 12 INTEGER, PARAMETER:: NK = 2, NP = 2, NO = 2, NW = NK * NP * NO 13 INTEGER, PARAMETER:: NA = 5 !number of realizations to get the phase speed 14 15 16 contains 17 18 SUBROUTINE ACAMA_GWD_rando_first 19 use dimphy, only: klev 20 USE ioipsl_getin_p_mod, ONLY : getin_p 21 IMPLICIT NONE 22 CHARACTER (LEN=20),PARAMETER :: modname='acama_gwd_rando_m' 125 126 CHARACTER (LEN=20) :: modname='acama_gwd_rando_m' 23 127 CHARACTER (LEN=80) :: abort_message 24 25 IF (firstcall) THEN 128 129 130 131 IF (firstcall) THEN 26 132 ! Cle introduite pour resoudre un probleme de non reproductibilite 27 133 ! Le but est de pouvoir tester de revenir a la version precedenete … … 34 140 firstcall=.false. 35 141 ! CALL iophys_ini(dtime) 36 ENDIF 37 END SUBROUTINE ACAMA_GWD_rando_first 38 39 SUBROUTINE ACAMA_GWD_rando(DTIME, pp, plat, tt, uu, vv, rot, & 40 zustr, zvstr, d_u, d_v,east_gwstress,west_gwstress) 41 42 ! Parametrization of the momentum flux deposition due to a discrete 43 ! number of gravity waves. 44 ! Author: F. Lott, A. de la Camara 45 ! July, 24th, 2014 46 ! Gaussian distribution of the source, source is vorticity squared 47 ! Reference: de la Camara and Lott (GRL, 2015, vol 42, 2071-2078 ) 48 ! Lott et al (JAS, 2010, vol 67, page 157-170) 49 ! Lott et al (JAS, 2012, vol 69, page 2134-2151) 50 51 ! ONLINE: 52 USE yoegwd_mod_h 53 USE yomcst_mod_h 54 use dimphy, only: klon, klev 55 use assert_m, only: assert 56 USE vertical_layers_mod, ONLY : presnivs 57 USE lmdz_fake_call, ONLY : fake_call 58 59 ! OFFLINE: 60 ! include "dimensions_mod.f90" 61 ! include "dimphy.h" 62 !END DIFFERENCE 63 64 ! 0. DECLARATIONS: 65 66 ! 0.1 INPUTS 67 REAL, intent(in)::DTIME ! Time step of the Physics 68 REAL, intent(in):: PP(KLON, KLEV) ! (KLON, KLEV) Pressure at full levels 69 REAL, intent(in):: ROT(KLON,KLEV) ! Relative vorticity 70 REAL, intent(in):: TT(KLON, KLEV) ! (KLON, KLEV) Temp at full levels 71 REAL, intent(in):: UU(KLON, KLEV) ! (KLON, KLEV) Zonal wind at full levels 72 REAL, intent(in):: VV(KLON, KLEV) ! (KLON, KLEV) Merid wind at full levels 73 REAL, intent(in):: PLAT(KLON) ! (KLON) LATITUDE 74 75 ! 0.2 OUTPUTS 76 REAL, intent(out):: zustr(KLON), zvstr(KLON) ! (KLON) Surface Stresses 77 78 REAL, intent(inout):: d_u(KLON, KLEV), d_v(KLON, KLEV) 79 REAL, intent(inout):: east_gwstress(KLON, KLEV) ! Profile of eastward stress 80 REAL, intent(inout):: west_gwstress(KLON, KLEV) ! Profile of westward stress 81 ! (KLON, KLEV) tendencies on winds 82 83 ! O.3 INTERNAL ARRAYS 84 REAL BVLOW(klon) ! LOW LEVEL BV FREQUENCY 85 REAL ROTBA(KLON),CORIO(KLON) ! BAROTROPIC REL. VORTICITY AND PLANETARY 86 REAL UZ(KLON, KLEV + 1) 87 88 INTEGER II, JJ, LL 89 90 ! 0.3.0 TIME SCALE OF THE LIFE CYCLE OF THE WAVES PARAMETERIZED 91 92 REAL DELTAT 93 94 ! 0.3.1 GRAVITY-WAVES SPECIFICATIONS 95 96 INTEGER JK, JP, JO, JW 97 REAL KMIN, KMAX ! Min and Max horizontal wavenumbers 98 REAL CMIN, CMAX ! Min and Max absolute ph. vel. 99 REAL CPHA ! absolute PHASE VELOCITY frequency 100 REAL ZK(KLON, NW) ! Horizontal wavenumber amplitude 101 REAL ZP(KLON, NW) ! Horizontal wavenumber angle 102 REAL ZO(KLON,NW) ! Absolute frequency ! 103 104 ! Waves Intr. freq. at the 1/2 lev surrounding the full level 105 REAL ZOM(KLON, NW), ZOP(KLON, NW) 106 107 ! Wave EP-fluxes at the 2 semi levels surrounding the full level 108 REAL WWM(KLON, NW), WWP(KLON, NW) 109 110 REAL RUW0(KLON, NW) ! Fluxes at launching level 111 112 REAL RUWP(KLON, NW), RVWP(KLON, NW) 113 ! Fluxes X and Y for each waves at 1/2 Levels 114 115 INTEGER LAUNCH, LTROP ! Launching altitude and tropo altitude 116 117 REAL XLAUNCH ! Controle the launching altitude 118 REAL XTROP ! SORT of Tropopause altitude 119 REAL RUW(KLON, KLEV + 1) ! Flux x at semi levels 120 REAL RVW(KLON, KLEV + 1) ! Flux y at semi levels 121 122 REAL PRMAX ! Maximum value of PREC, and for which our linear formula 123 ! for GWs parameterisation apply 124 125 ! 0.3.2 PARAMETERS OF WAVES DISSIPATIONS 126 127 REAL RDISS, ZOISEC ! COEFF DE DISSIPATION, SECURITY FOR INTRINSIC FREQ 128 REAL CORSEC ! SECURITY FOR INTRINSIC CORIOLIS 129 REAL RUWFRT,SATFRT 130 131 ! 0.3.3 BACKGROUND FLOW AT 1/2 LEVELS AND VERTICAL COORDINATE 132 133 REAL H0 ! Characteristic Height of the atmosphere 134 REAL DZ ! Characteristic depth of the source! 135 REAL PR, TR ! Reference Pressure and Temperature 136 137 REAL ZH(KLON, KLEV + 1) ! Log-pressure altitude 138 139 REAL UH(KLON, KLEV + 1), VH(KLON, KLEV + 1) ! Winds at 1/2 levels 140 REAL PH(KLON, KLEV + 1) ! Pressure at 1/2 levels 141 REAL PSEC ! Security to avoid division by 0 pressure 142 REAL PHM1(KLON, KLEV + 1) ! 1/Press at 1/2 levels 143 REAL BV(KLON, KLEV + 1) ! Brunt Vaisala freq. (BVF) at 1/2 levels 144 REAL BVSEC ! Security to avoid negative BVF 145 146 REAL, DIMENSION(klev+1) ::HREF 147 148 CHARACTER (LEN=20),PARAMETER :: modname='acama_gwd_rando_m' 149 CHARACTER (LEN=80) :: abort_message 150 142 ENDIF 151 143 152 144 !----------------------------------------------------------------- … … 219 211 ! END ONLINE 220 212 221 CALL FAKE_CALL(BVLOW) ! to be suppress in future222 CALL FAKE_CALL(CORIO) ! to be suppress in future223 CALL FAKE_CALL(ROTBA) ! to be suppress in future224 225 213 IF(DELTAT < DTIME)THEN 226 214 ! PRINT *, 'flott_gwd_rando: deltat < dtime!' … … 288 276 - TT(:, LL - 1)) / (ZH(:, LL) - ZH(:, LL - 1)) * RD / H0 289 277 end DO 290 BVLOW (:)= 0.5 * (TT(:, LTROP )+ TT(:, LAUNCH)) &278 BVLOW = 0.5 * (TT(:, LTROP )+ TT(:, LAUNCH)) & 291 279 * RD**2 / RCPD / H0**2 + (TT(:, LTROP ) & 292 280 - TT(:, LAUNCH))/(ZH(:, LTROP )- ZH(:, LAUNCH)) * RD / H0 … … 357 345 DO II = 1, KLON 358 346 ! Angle (0 or PI so far) 359 ! ZP( II,JW) = (SIGN(1., 0.5 - MOD(TT(II, JW) * 10., 1.)) + 1.) &347 ! ZP(JW, II) = (SIGN(1., 0.5 - MOD(TT(II, JW) * 10., 1.)) + 1.) & 360 348 ! * RPI / 2. 361 349 ! Angle between 0 and pi 362 ZP( II,JW) = MOD(TT(II, JW) * 10., 1.) * RPI350 ZP(JW, II) = MOD(TT(II, JW) * 10., 1.) * RPI 363 351 ! TEST WITH POSITIVE WAVES ONLY (Part I/II) 364 ! ZP( II,JW) = 0.352 ! ZP(JW, II) = 0. 365 353 ! Horizontal wavenumber amplitude 366 ZK( II,JW) = KMIN + (KMAX - KMIN) * MOD(TT(II, JW) * 100., 1.)354 ZK(JW, II) = KMIN + (KMAX - KMIN) * MOD(TT(II, JW) * 100., 1.) 367 355 ! Horizontal phase speed 368 356 CPHA = 0. … … 373 361 IF (CPHA.LT.0.) THEN 374 362 CPHA = -1.*CPHA 375 ZP( II,JW) = ZP(II,JW) + RPI363 ZP(JW,II) = ZP(JW,II) + RPI 376 364 ! TEST WITH POSITIVE WAVES ONLY (Part II/II) 377 ! ZP( II,JW) = 0.365 ! ZP(JW, II) = 0. 378 366 ENDIF 379 367 CPHA = CPHA + CMIN !we dont allow |c|<1m/s 380 368 ! Absolute frequency is imposed 381 ZO( II, JW) = CPHA * ZK(II,JW)369 ZO(JW, II) = CPHA * ZK(JW, II) 382 370 ! Intrinsic frequency is imposed 383 ZO( II, JW) = ZO(II, JW) &384 + ZK( II,JW) * COS(ZP(II,JW)) * UH(II, LAUNCH) &385 + ZK( II,JW) * SIN(ZP(II,JW)) * VH(II, LAUNCH)371 ZO(JW, II) = ZO(JW, II) & 372 + ZK(JW, II) * COS(ZP(JW, II)) * UH(II, LAUNCH) & 373 + ZK(JW, II) * SIN(ZP(JW, II)) * VH(II, LAUNCH) 386 374 ! Momentum flux at launch lev 387 375 ! LAUNCHED RANDOM WAVES WITH LOG-NORMAL AMPLITUDE 388 376 ! RIGHT IN THE SH (GWD4 after 1990) 389 RUW0( II, JW) = 0.377 RUW0(JW, II) = 0. 390 378 DO JJ = 1, NA 391 RUW0( II, JW) = RUW0(II, JW) + &379 RUW0(JW, II) = RUW0(JW,II) + & 392 380 2.*(MOD(TT(II, JW+4*(JJ-1)+JJ)**2, 1.)-0.5)*SQRT(3.)/SQRT(NA*1.) 393 381 END DO 394 RUW0( II,JW) = RUWFRT &395 * EXP(RUW0( II,JW))/1250. & ! 2 mpa at south pole382 RUW0(JW, II) = RUWFRT & 383 * EXP(RUW0(JW,II))/1250. & ! 2 mpa at south pole 396 384 *((1.05+SIN(PLAT(II)*RPI/180.))/(1.01+SIN(PLAT(II)*RPI/180.))-2.05/2.01) 397 ! RUW0( II,JW) = RUWFRT385 ! RUW0(JW, II) = RUWFRT 398 386 ENDDO 399 387 end DO … … 409 397 410 398 ! Evaluate intrinsic frequency at launching altitude: 411 ZOP( :, JW) = ZO(:, JW) &412 - ZK( :,JW) * COS(ZP(:,JW)) * UH(:, LAUNCH) &413 - ZK( :,JW) * SIN(ZP(:,JW)) * VH(:, LAUNCH)399 ZOP(JW, :) = ZO(JW, :) & 400 - ZK(JW, :) * COS(ZP(JW, :)) * UH(:, LAUNCH) & 401 - ZK(JW, :) * SIN(ZP(JW, :)) * VH(:, LAUNCH) 414 402 415 403 ! VERSION WITH FRONTAL SOURCES … … 418 406 419 407 ! tanh limitation for values above CORIO (inertial instability). 420 ! WWP( :,JW) = RUW0(:,JW) &421 WWP( :,JW) = RUWFRT &408 ! WWP(JW, :) = RUW0(JW, :) & 409 WWP(JW, :) = RUWFRT & 422 410 ! * (CORIO(:)*TANH(ROTBA(:)/CORIO(:)))**2 & 423 411 ! * ABS((CORIO(:)*TANH(ROTBA(:)/CORIO(:)))*CORIO(:)) & … … 425 413 ! * (CORIO(:)*CORIO(:)) & 426 414 ! MODERATION BY THE DEPTH OF THE SOURCE (DZ HERE) 427 ! *EXP(-BVLOW(:)**2/MAX(ABS(ZOP( :,JW)),ZOISEC)**2 &428 ! *ZK( :,JW)**2*DZ**2) &415 ! *EXP(-BVLOW(:)**2/MAX(ABS(ZOP(JW, :)),ZOISEC)**2 & 416 ! *ZK(JW, :)**2*DZ**2) & 429 417 ! COMPLETE FORMULA: 430 418 !* CORIO(:)**2*TANH(ROTBA(:)/CORIO(:)**2) & … … 432 420 ! RESTORE DIMENSION OF A FLUX 433 421 ! *RD*TR/PR 434 ! *1. + RUW0( :,JW)422 ! *1. + RUW0(JW, :) 435 423 *1. 436 424 … … 441 429 ! Put the stress in the right direction: 442 430 443 RUWP( :,JW) = SIGN(1., ZOP(:,JW))*COS(ZP(:,JW)) * WWP(:,JW)444 RVWP( :,JW) = SIGN(1., ZOP(:,JW))*SIN(ZP(:,JW)) * WWP(:,JW)431 RUWP(JW, :) = SIGN(1., ZOP(JW, :))*COS(ZP(JW, :)) * WWP(JW, :) 432 RVWP(JW, :) = SIGN(1., ZOP(JW, :))*SIN(ZP(JW, :)) * WWP(JW, :) 445 433 446 434 end DO … … 452 440 RVW(:, LL) = 0 453 441 DO JW = 1, NW 454 RUW(:, LL) = RUW(:, LL) + RUWP( :,JW)455 RVW(:, LL) = RVW(:, LL) + RVWP( :,JW)442 RUW(:, LL) = RUW(:, LL) + RUWP(JW, :) 443 RVW(:, LL) = RVW(:, LL) + RVWP(JW, :) 456 444 end DO 457 445 end DO … … 465 453 ! to the next) 466 454 DO JW = 1, NW 467 ZOM( :, JW) = ZOP(:,JW)468 WWM( :,JW) = WWP(:,JW)455 ZOM(JW, :) = ZOP(JW, :) 456 WWM(JW, :) = WWP(JW, :) 469 457 ! Intrinsic Frequency 470 ZOP( :,JW) = ZO(:, JW) - ZK(:,JW) * COS(ZP(:,JW)) * UH(:, LL + 1) &471 - ZK( :,JW) * SIN(ZP(:,JW)) * VH(:, LL + 1)458 ZOP(JW, :) = ZO(JW, :) - ZK(JW, :) * COS(ZP(JW, :)) * UH(:, LL + 1) & 459 - ZK(JW, :) * SIN(ZP(JW, :)) * VH(:, LL + 1) 472 460 473 461 ! No breaking (Eq.6) 474 462 ! Dissipation (Eq. 8) 475 WWP( :,JW) = WWM(:,JW) * EXP(- 4. * RDISS * PR / (PH(:, LL + 1) &463 WWP(JW, :) = WWM(JW, :) * EXP(- 4. * RDISS * PR / (PH(:, LL + 1) & 476 464 + PH(:, LL)) * ((BV(:, LL + 1) + BV(:, LL)) / 2.)**3 & 477 / MAX(ABS(ZOP( :,JW) + ZOM(:, JW)) / 2., ZOISEC)**4 &478 * ZK( :,JW)**3 * (ZH(:, LL + 1) - ZH(:, LL)))465 / MAX(ABS(ZOP(JW, :) + ZOM(JW, :)) / 2., ZOISEC)**4 & 466 * ZK(JW, :)**3 * (ZH(:, LL + 1) - ZH(:, LL))) 479 467 480 468 ! Critical levels (forced to zero if intrinsic frequency changes sign) 481 469 ! Saturation (Eq. 12) 482 WWP( :,JW) = min(WWP(:,JW), MAX(0., &483 SIGN(1., ZOP( :,JW) * ZOM(:, JW))) * ABS(ZOP(:,JW))**3 &470 WWP(JW, :) = min(WWP(JW, :), MAX(0., & 471 SIGN(1., ZOP(JW, :) * ZOM(JW, :))) * ABS(ZOP(JW, :))**3 & 484 472 ! / BV(:, LL + 1) * EXP(- ZH(:, LL + 1) / H0) * SATFRT**2 * KMIN**2 & 485 473 / BV(:, LL + 1) * EXP(- ZH(:, LL + 1) / H0) * KMIN**2 & 486 474 ! *(SATFRT*(2.5+1.5*TANH((ZH(:,LL+1)/H0-8.)/2.)))**2 & 487 475 *SATFRT**2 & 488 / ZK( :,JW)**4)476 / ZK(JW, :)**4) 489 477 end DO 490 478 … … 493 481 494 482 DO JW = 1, NW 495 RUWP( :,JW) = SIGN(1., ZOP(:,JW))*COS(ZP(:,JW)) * WWP(:,JW)496 RVWP( :,JW) = SIGN(1., ZOP(:,JW))*SIN(ZP(:,JW)) * WWP(:,JW)483 RUWP(JW, :) = SIGN(1., ZOP(JW, :))*COS(ZP(JW, :)) * WWP(JW, :) 484 RVWP(JW, :) = SIGN(1., ZOP(JW, :))*SIN(ZP(JW, :)) * WWP(JW, :) 497 485 end DO 498 486 … … 501 489 502 490 DO JW = 1, NW 503 RUW(:, LL + 1) = RUW(:, LL + 1) + RUWP( :,JW)504 RVW(:, LL + 1) = RVW(:, LL + 1) + RVWP( :,JW)505 EAST_GWSTRESS(:, LL)=EAST_GWSTRESS(:, LL)+MAX(0.,RUWP( :,JW))/REAL(NW)506 WEST_GWSTRESS(:, LL)=WEST_GWSTRESS(:, LL)+MIN(0.,RUWP( :,JW))/REAL(NW)491 RUW(:, LL + 1) = RUW(:, LL + 1) + RUWP(JW, :) 492 RVW(:, LL + 1) = RVW(:, LL + 1) + RVWP(JW, :) 493 EAST_GWSTRESS(:, LL)=EAST_GWSTRESS(:, LL)+MAX(0.,RUWP(JW,:))/FLOAT(NW) 494 WEST_GWSTRESS(:, LL)=WEST_GWSTRESS(:, LL)+MIN(0.,RUWP(JW,:))/FLOAT(NW) 507 495 end DO 508 496 end DO -
LMDZ6/trunk/libf/phylmd/flott_gwd_rando_m.f90
r5512 r5561 6 6 USE clesphys_mod_h 7 7 implicit none 8 9 contains 10 11 SUBROUTINE FLOTT_GWD_rando(DTIME, pp, tt, uu, vv, prec, zustr, zvstr, d_u, & 12 d_v,east_gwstress,west_gwstress) 13 14 ! Parametrization of the momentum flux deposition due to a discrete 15 ! number of gravity waves. 16 ! Author: F. Lott 17 ! July, 12th, 2012 18 ! Gaussian distribution of the source, source is precipitation 19 ! Reference: Lott (JGR, vol 118, page 8897, 2013) 20 21 !ONLINE: 22 USE yomcst_mod_h 23 use dimphy, only: klon, klev 24 use assert_m, only: assert 25 USE ioipsl_getin_p_mod, ONLY : getin_p 26 USE vertical_layers_mod, ONLY : presnivs 27 USE yoegwd_mod_h 28 CHARACTER (LEN=20) :: modname='flott_gwd_rando' 29 CHARACTER (LEN=80) :: abort_message 30 31 ! OFFLINE: 32 ! include "dimensions_mod.f90" 33 ! include "dimphy.h" 34 ! END OF DIFFERENCE ONLINE-OFFLINE 35 36 ! 0. DECLARATIONS: 37 38 ! 0.1 INPUTS 39 REAL, intent(in)::DTIME ! Time step of the Physics 40 REAL, intent(in):: pp(:, :) ! (KLON, KLEV) Pressure at full levels 41 REAL, intent(in):: prec(:) ! (klon) Precipitation (kg/m^2/s) 42 REAL, intent(in):: TT(:, :) ! (KLON, KLEV) Temp at full levels 43 REAL, intent(in):: UU(:, :) ! (KLON, KLEV) Zonal wind at full levels 44 REAL, intent(in):: VV(:, :) ! (KLON, KLEV) Merid wind at full levels 45 46 ! 0.2 OUTPUTS 47 REAL, intent(out):: zustr(:), zvstr(:) ! (KLON) Surface Stresses 48 49 REAL, intent(inout):: d_u(:, :), d_v(:, :) 50 REAL, intent(inout):: east_gwstress(:, :) ! Profile of eastward stress 51 REAL, intent(inout):: west_gwstress(:, :) ! Profile of westward stress 52 53 ! (KLON, KLEV) tendencies on winds 54 55 ! O.3 INTERNAL ARRAYS 56 REAL BVLOW(klon) 57 REAL DZ ! Characteristic depth of the Source 58 59 INTEGER II, JJ, LL 60 61 ! 0.3.0 TIME SCALE OF THE LIFE CYCLE OF THE WAVES PARAMETERIZED 62 63 REAL DELTAT 64 65 ! 0.3.1 GRAVITY-WAVES SPECIFICATIONS 66 8 67 INTEGER, PARAMETER:: NK = 2, NP = 2, NO = 2, NW = NK * NP * NO 68 INTEGER JK, JP, JO, JW 9 69 INTEGER, PARAMETER:: NA = 5 !number of realizations to get the phase speed 70 REAL KMIN, KMAX ! Min and Max horizontal wavenumbers 71 REAL CMAX ! standard deviation of the phase speed distribution 72 REAL RUWMAX,SAT ! ONLINE SPECIFIED IN run.def 73 REAL CPHA ! absolute PHASE VELOCITY frequency 74 REAL ZK(NW, KLON) ! Horizontal wavenumber amplitude 75 REAL ZP(NW, KLON) ! Horizontal wavenumber angle 76 REAL ZO(NW, KLON) ! Absolute frequency ! 77 78 ! Waves Intr. freq. at the 1/2 lev surrounding the full level 79 REAL ZOM(NW, KLON), ZOP(NW, KLON) 80 81 ! Wave EP-fluxes at the 2 semi levels surrounding the full level 82 REAL WWM(NW, KLON), WWP(NW, KLON) 83 84 REAL RUW0(NW, KLON) ! Fluxes at launching level 85 86 REAL RUWP(NW, KLON), RVWP(NW, KLON) 87 ! Fluxes X and Y for each waves at 1/2 Levels 88 89 INTEGER LAUNCH, LTROP ! Launching altitude and tropo altitude 90 91 REAL XLAUNCH ! Controle the launching altitude 92 REAL XTROP ! SORT of Tropopause altitude 93 REAL RUW(KLON, KLEV + 1) ! Flux x at semi levels 94 REAL RVW(KLON, KLEV + 1) ! Flux y at semi levels 95 96 REAL PRMAX ! Maximum value of PREC, and for which our linear formula 97 ! for GWs parameterisation apply 98 99 ! 0.3.2 PARAMETERS OF WAVES DISSIPATIONS 100 101 REAL RDISS, ZOISEC ! COEFF DE DISSIPATION, SECURITY FOR INTRINSIC FREQ 102 103 ! 0.3.3 BACKGROUND FLOW AT 1/2 LEVELS AND VERTICAL COORDINATE 104 105 REAL H0 ! Characteristic Height of the atmosphere 106 REAL PR, TR ! Reference Pressure and Temperature 107 108 REAL ZH(KLON, KLEV + 1) ! Log-pressure altitude 109 110 REAL UH(KLON, KLEV + 1), VH(KLON, KLEV + 1) ! Winds at 1/2 levels 111 REAL PH(KLON, KLEV + 1) ! Pressure at 1/2 levels 112 REAL PSEC ! Security to avoid division by 0 pressure 113 REAL BV(KLON, KLEV + 1) ! Brunt Vaisala freq. (BVF) at 1/2 levels 114 REAL BVSEC ! Security to avoid negative BVF 115 REAL RAN_NUM_1,RAN_NUM_2,RAN_NUM_3 116 117 REAL, DIMENSION(klev+1) ::HREF 118 10 119 LOGICAL, SAVE :: gwd_reproductibilite_mpiomp=.true. 11 120 LOGICAL, SAVE :: firstcall = .TRUE. 12 !$OMP THREADPRIVATE(firstcall,gwd_reproductibilite_mpiomp) 13 14 contains 15 16 SUBROUTINE FLOTT_GWD_rando_first 17 use dimphy, only: klev 18 USE ioipsl_getin_p_mod, ONLY : getin_p 19 IMPLICIT NONE 20 CHARACTER (LEN=20),PARAMETER :: modname='acama_gwd_rando_m' 21 CHARACTER (LEN=80) :: abort_message 22 23 IF (firstcall) THEN 121 !$OMP THREADPRIVATE(firstcall,gwd_reproductibilite_mpiomp) 122 123 124 IF (firstcall) THEN 24 125 ! Cle introduite pour resoudre un probleme de non reproductibilite 25 126 ! Le but est de pouvoir tester de revenir a la version precedenete … … 32 133 firstcall=.false. 33 134 ENDIF 34 END SUBROUTINE FLOTT_GWD_rando_first35 36 37 SUBROUTINE FLOTT_GWD_rando(DTIME, PP, tt, uu, vv, prec, zustr, zvstr, d_u, &38 d_v,east_gwstress,west_gwstress)39 40 ! Parametrization of the momentum flux deposition due to a discrete41 ! number of gravity waves.42 ! Author: F. Lott43 ! July, 12th, 201244 ! Gaussian distribution of the source, source is precipitation45 ! Reference: Lott (JGR, vol 118, page 8897, 2013)46 47 !ONLINE:48 USE yomcst_mod_h49 use dimphy, only: klon, klev50 use assert_m, only: assert51 USE ioipsl_getin_p_mod, ONLY : getin_p52 USE vertical_layers_mod, ONLY : presnivs53 USE yoegwd_mod_h54 USE lmdz_fake_call, ONLY : fake_call55 56 CHARACTER (LEN=20),PARAMETER :: modname='flott_gwd_rando'57 CHARACTER (LEN=80) :: abort_message58 59 ! OFFLINE:60 ! include "dimensions_mod.f90"61 ! include "dimphy.h"62 ! END OF DIFFERENCE ONLINE-OFFLINE63 64 ! 0. DECLARATIONS:65 66 ! 0.1 INPUTS67 REAL, intent(in)::DTIME ! Time step of the Physics68 REAL, intent(in):: pp(KLON, KLEV) ! (KLON, KLEV) Pressure at full levels69 REAL, intent(in):: prec(KLON) ! (klon) Precipitation (kg/m^2/s)70 REAL, intent(in):: TT(KLON, KLEV) ! (KLON, KLEV) Temp at full levels71 REAL, intent(in):: UU(KLON, KLEV) ! (KLON, KLEV) Zonal wind at full levels72 REAL, intent(in):: VV(KLON, KLEV) ! (KLON, KLEV) Merid wind at full levels73 74 ! 0.2 OUTPUTS75 REAL, intent(out):: zustr(KLON), zvstr(KLON) ! (KLON) Surface Stresses76 77 REAL, intent(inout):: d_u(KLON, KLEV), d_v(KLON, KLEV)78 REAL, intent(inout):: east_gwstress(KLON, KLEV) ! Profile of eastward stress79 REAL, intent(inout):: west_gwstress(KLON, KLEV) ! Profile of westward stress80 81 ! (KLON, KLEV) tendencies on winds82 83 ! O.3 INTERNAL ARRAYS84 REAL BVLOW(klon)85 REAL DZ ! Characteristic depth of the Source86 87 INTEGER II, JJ, LL88 89 ! 0.3.0 TIME SCALE OF THE LIFE CYCLE OF THE WAVES PARAMETERIZED90 91 REAL DELTAT92 93 ! 0.3.1 GRAVITY-WAVES SPECIFICATIONS94 95 INTEGER JK, JP, JO, JW96 REAL KMIN, KMAX ! Min and Max horizontal wavenumbers97 REAL CMAX ! standard deviation of the phase speed distribution98 REAL RUWMAX,SAT ! ONLINE SPECIFIED IN run.def99 REAL CPHA ! absolute PHASE VELOCITY frequency100 REAL ZK(KLON, NW) ! Horizontal wavenumber amplitude101 REAL ZP(KLON, NW) ! Horizontal wavenumber angle102 REAL ZO(KLON, NW) ! Absolute frequency !103 104 ! Waves Intr. freq. at the 1/2 lev surrounding the full level105 REAL ZOM(KLON, NW), ZOP(KLON, NW)106 107 ! Wave EP-fluxes at the 2 semi levels surrounding the full level108 REAL WWM(KLON, NW), WWP(KLON, NW)109 110 REAL RUW0(KLON, NW) ! Fluxes at launching level111 112 REAL RUWP(KLON, NW), RVWP(KLON, NW)113 ! Fluxes X and Y for each waves at 1/2 Levels114 115 INTEGER LAUNCH, LTROP ! Launching altitude and tropo altitude116 117 REAL XLAUNCH ! Controle the launching altitude118 REAL XTROP ! SORT of Tropopause altitude119 REAL RUW(KLON, KLEV + 1) ! Flux x at semi levels120 REAL RVW(KLON, KLEV + 1) ! Flux y at semi levels121 122 REAL PRMAX ! Maximum value of PREC, and for which our linear formula123 ! for GWs parameterisation apply124 125 ! 0.3.2 PARAMETERS OF WAVES DISSIPATIONS126 127 REAL RDISS, ZOISEC ! COEFF DE DISSIPATION, SECURITY FOR INTRINSIC FREQ128 129 ! 0.3.3 BACKGROUND FLOW AT 1/2 LEVELS AND VERTICAL COORDINATE130 131 REAL H0 ! Characteristic Height of the atmosphere132 REAL PR, TR ! Reference Pressure and Temperature133 134 REAL ZH(KLON, KLEV + 1) ! Log-pressure altitude135 136 REAL UH(KLON, KLEV + 1), VH(KLON, KLEV + 1) ! Winds at 1/2 levels137 REAL PH(KLON, KLEV + 1) ! Pressure at 1/2 levels138 REAL PSEC ! Security to avoid division by 0 pressure139 REAL BV(KLON, KLEV + 1) ! Brunt Vaisala freq. (BVF) at 1/2 levels140 REAL BVSEC ! Security to avoid negative BVF141 REAL RAN_NUM_1,RAN_NUM_2,RAN_NUM_3142 143 REAL, DIMENSION(klev+1) ::HREF144 135 145 136 … … 206 197 !END ONLINE 207 198 ENDIF 208 199 209 200 IF(DELTAT < DTIME)THEN 210 201 abort_message='flott_gwd_rando: deltat < dtime!' … … 216 207 CALL abort_physic(modname,abort_message,1) 217 208 ENDIF 218 219 CALL FAKE_CALL(BVLOW) ! to be suppress in future 220 209 221 210 ! 2. EVALUATION OF THE BACKGROUND FLOW AT SEMI-LEVELS 222 211 … … 303 292 RAN_NUM_1=MOD(TT(II, JW) * 10., 1.) 304 293 RAN_NUM_2= MOD(TT(II, JW) * 100., 1.) 305 ZP( II, JW) = (SIGN(1., 0.5 - RAN_NUM_1) + 1.) &294 ZP(JW, II) = (SIGN(1., 0.5 - RAN_NUM_1) + 1.) & 306 295 * RPI / 2. 307 296 ! Horizontal wavenumber amplitude 308 ZK( II, JW) = KMIN + (KMAX - KMIN) *RAN_NUM_2297 ZK(JW, II) = KMIN + (KMAX - KMIN) *RAN_NUM_2 309 298 ! Horizontal phase speed 310 299 CPHA = 0. … … 316 305 IF (CPHA.LT.0.) THEN 317 306 CPHA = -1.*CPHA 318 ZP( II, JW) = ZP(II, JW) + RPI307 ZP(JW,II) = ZP(JW,II) + RPI 319 308 ENDIF 320 309 ! Absolute frequency is imposed 321 ZO( II, JW) = CPHA * ZK(II, JW)310 ZO(JW, II) = CPHA * ZK(JW, II) 322 311 ! Intrinsic frequency is imposed 323 ZO( II, JW) = ZO(II, JW) &324 + ZK( II, JW) * COS(ZP(II, JW)) * UH(II, LAUNCH) &325 + ZK( II, JW) * SIN(ZP(II, JW)) * VH(II, LAUNCH)312 ZO(JW, II) = ZO(JW, II) & 313 + ZK(JW, II) * COS(ZP(JW, II)) * UH(II, LAUNCH) & 314 + ZK(JW, II) * SIN(ZP(JW, II)) * VH(II, LAUNCH) 326 315 ! Momentum flux at launch lev 327 RUW0( II, JW) = RUWMAX316 RUW0(JW, II) = RUWMAX 328 317 ENDDO 329 318 ENDDO … … 337 326 338 327 ! Evaluate intrinsic frequency at launching altitude: 339 ZOP( :,JW) = ZO(:, JW) &340 - ZK( :, JW) * COS(ZP(:, JW)) * UH(:, LAUNCH) &341 - ZK( :, JW) * SIN(ZP(:, JW)) * VH(:, LAUNCH)328 ZOP(JW, :) = ZO(JW, :) & 329 - ZK(JW, :) * COS(ZP(JW, :)) * UH(:, LAUNCH) & 330 - ZK(JW, :) * SIN(ZP(JW, :)) * VH(:, LAUNCH) 342 331 343 332 ! VERSION WITH CONVECTIVE SOURCE … … 348 337 349 338 ! tanh limitation to values above prmax: 350 WWP( :, JW) = RUW0(:, JW) &339 WWP(JW, :) = RUW0(JW, :) & 351 340 * (RD / RCPD / H0 * RLVTT * PRMAX * TANH(PREC(:) / PRMAX))**2 352 341 353 342 ! Factor related to the characteristics of the waves: 354 WWP( :, JW) = WWP(:, JW) * ZK(:, JW)**3 / KMIN / BVLOW(:) &355 / MAX(ABS(ZOP( :, JW)), ZOISEC)**3343 WWP(JW, :) = WWP(JW, :) * ZK(JW, :)**3 / KMIN / BVLOW(:) & 344 / MAX(ABS(ZOP(JW, :)), ZOISEC)**3 356 345 357 346 ! Moderation by the depth of the source (dz here): 358 WWP( :, JW) = WWP(:, JW) &359 * EXP(- BVLOW(:)**2 / MAX(ABS(ZOP( :, JW)), ZOISEC)**2 * ZK(:, JW)**2 &347 WWP(JW, :) = WWP(JW, :) & 348 * EXP(- BVLOW(:)**2 / MAX(ABS(ZOP(JW, :)), ZOISEC)**2 * ZK(JW, :)**2 & 360 349 * DZ**2) 361 350 362 351 ! Put the stress in the right direction: 363 RUWP( :, JW) = ZOP(:, JW) / MAX(ABS(ZOP(:, JW)), ZOISEC)**2 &364 * BV(:, LAUNCH) * COS(ZP( :, JW)) * WWP(:, JW)**2365 RVWP( :, JW) = ZOP(:, JW) / MAX(ABS(ZOP(:, JW)), ZOISEC)**2 &366 * BV(:, LAUNCH) * SIN(ZP( :, JW)) * WWP(:, JW)**2352 RUWP(JW, :) = ZOP(JW, :) / MAX(ABS(ZOP(JW, :)), ZOISEC)**2 & 353 * BV(:, LAUNCH) * COS(ZP(JW, :)) * WWP(JW, :)**2 354 RVWP(JW, :) = ZOP(JW, :) / MAX(ABS(ZOP(JW, :)), ZOISEC)**2 & 355 * BV(:, LAUNCH) * SIN(ZP(JW, :)) * WWP(JW, :)**2 367 356 end DO 368 357 … … 374 363 RVW(:, LL) = 0 375 364 DO JW = 1, NW 376 RUW(:, LL) = RUW(:, LL) + RUWP( :, JW)377 RVW(:, LL) = RVW(:, LL) + RVWP( :, JW)365 RUW(:, LL) = RUW(:, LL) + RUWP(JW, :) 366 RVW(:, LL) = RVW(:, LL) + RVWP(JW, :) 378 367 end DO 379 368 end DO … … 387 376 ! to the next) 388 377 DO JW = 1, NW 389 ZOM( :, JW) = ZOP(:,JW)390 WWM( :, JW) = WWP(:, JW)378 ZOM(JW, :) = ZOP(JW, :) 379 WWM(JW, :) = WWP(JW, :) 391 380 ! Intrinsic Frequency 392 ZOP( :, JW) = ZO(:, JW) - ZK(:, JW) * COS(ZP(:, JW)) * UH(:, LL + 1) &393 - ZK( :, JW) * SIN(ZP(:, JW)) * VH(:, LL + 1)381 ZOP(JW, :) = ZO(JW, :) - ZK(JW, :) * COS(ZP(JW, :)) * UH(:, LL + 1) & 382 - ZK(JW, :) * SIN(ZP(JW, :)) * VH(:, LL + 1) 394 383 395 384 ! No breaking (Eq.6) 396 385 ! Dissipation (Eq. 8) 397 WWP( :, JW) = WWM(:, JW) * EXP(- 4. * RDISS * PR / (PH(:, LL + 1) &386 WWP(JW, :) = WWM(JW, :) * EXP(- 4. * RDISS * PR / (PH(:, LL + 1) & 398 387 + PH(:, LL)) * ((BV(:, LL + 1) + BV(:, LL)) / 2.)**3 & 399 / MAX(ABS(ZOP( :, JW) + ZOM(:, JW)) / 2., ZOISEC)**4 &400 * ZK( :, JW)**3 * (ZH(:, LL + 1) - ZH(:, LL)))388 / MAX(ABS(ZOP(JW, :) + ZOM(JW, :)) / 2., ZOISEC)**4 & 389 * ZK(JW, :)**3 * (ZH(:, LL + 1) - ZH(:, LL))) 401 390 402 391 ! Critical levels (forced to zero if intrinsic frequency changes sign) 403 392 ! Saturation (Eq. 12) 404 WWP( :, JW) = min(WWP(:, JW), MAX(0., &405 SIGN(1., ZOP( :, JW) * ZOM(:, JW))) * ABS(ZOP(:, JW))**3 &393 WWP(JW, :) = min(WWP(JW, :), MAX(0., & 394 SIGN(1., ZOP(JW, :) * ZOM(JW, :))) * ABS(ZOP(JW, :))**3 & 406 395 / BV(:, LL + 1) * EXP(- ZH(:, LL + 1) / H0) * KMIN**2 & 407 * SAT**2 / ZK( :, JW)**4)396 * SAT**2 / ZK(JW, :)**4) 408 397 end DO 409 398 … … 412 401 413 402 DO JW = 1, NW 414 RUWP( :, JW) = SIGN(1., ZOP(:, JW))*COS(ZP(:, JW)) * WWP(:, JW)415 RVWP( :, JW) = SIGN(1., ZOP(:, JW))*SIN(ZP(:, JW)) * WWP(:, JW)403 RUWP(JW, :) = SIGN(1., ZOP(JW, :))*COS(ZP(JW, :)) * WWP(JW, :) 404 RVWP(JW, :) = SIGN(1., ZOP(JW, :))*SIN(ZP(JW, :)) * WWP(JW, :) 416 405 end DO 417 406 … … 420 409 421 410 DO JW = 1, NW 422 RUW(:, LL + 1) = RUW(:, LL + 1) + RUWP( :, JW)423 RVW(:, LL + 1) = RVW(:, LL + 1) + RVWP( :, JW)424 EAST_GWSTRESS(:, LL)=EAST_GWSTRESS(:, LL)+MAX(0.,RUWP( :, JW))/REAL(NW)425 WEST_GWSTRESS(:, LL)=WEST_GWSTRESS(:, LL)+MIN(0.,RUWP( :, JW))/REAL(NW)411 RUW(:, LL + 1) = RUW(:, LL + 1) + RUWP(JW, :) 412 RVW(:, LL + 1) = RVW(:, LL + 1) + RVWP(JW, :) 413 EAST_GWSTRESS(:, LL)=EAST_GWSTRESS(:, LL)+MAX(0.,RUWP(JW,:))/FLOAT(NW) 414 WEST_GWSTRESS(:, LL)=WEST_GWSTRESS(:, LL)+MIN(0.,RUWP(JW,:))/FLOAT(NW) 426 415 end DO 427 416 end DO -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r5559 r5561 20 20 ! PLEASE try to follow this rule 21 21 22 USE ACAMA_GWD_rando_m, only: ACAMA_GWD_rando , ACAMA_GWD_rando_first22 USE ACAMA_GWD_rando_m, only: ACAMA_GWD_rando 23 23 USE aero_mod 24 24 USE add_phys_tend_mod, only : add_pbl_tend, add_phys_tend, diag_phys_tend, prt_enerbil, & … … 32 32 USE dimphy 33 33 USE etat0_limit_unstruct_mod 34 USE FLOTT_GWD_rando_m, only: FLOTT_GWD_rando , FLOTT_GWD_rando_first34 USE FLOTT_GWD_rando_m, only: FLOTT_GWD_rando 35 35 USE fonte_neige_mod, ONLY : fonte_neige_get_vars 36 36 USE geometry_mod, ONLY: cell_area, latitude_deg, longitude_deg … … 4970 4970 IF (.not. ok_hines .and. ok_gwd_rando) then 4971 4971 ! ym missing init for east_gwstress & west_gwstress -> added in phys_local_var_mod 4972 CALL acama_GWD_rando_first()4973 4972 CALL acama_GWD_rando(PHYS_TSTEP, pplay, latitude_deg, t_seri, u_seri, & 4974 4973 v_seri, rot, zustr_gwd_front, zvstr_gwd_front, du_gwd_front, & … … 4989 4988 4990 4989 IF (ok_gwd_rando) THEN 4991 CALL FLOTT_GWD_rando_first()4992 4990 CALL FLOTT_GWD_rando(PHYS_TSTEP, pplay, t_seri, u_seri, v_seri, & 4993 4991 rain_fall + snow_fall, zustr_gwd_rando, zvstr_gwd_rando, &
Note: See TracChangeset
for help on using the changeset viewer.