Changeset 5761
- Timestamp:
- Jul 5, 2025, 11:31:07 PM (2 days ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lmdz_wake.f90
r5499 r5761 5 5 IMPLICIT NONE; PRIVATE 6 6 7 LOGICAL, PARAMETER :: phys_sub=.false. 7 !!! LOGICAL, PARAMETER :: phys_sub=.false. 8 LOGICAL, PARAMETER :: phys_sub=.true. 8 9 LOGICAL :: first_call=.true. 9 10 !$OMP THREADPRIVATE(first_call) … … 42 43 dth, hw, wape, fip, gfl, & 43 44 dtls, dqls, ktopw, omgbdth, dp_omgb, tx, qx, & 44 dtke, dqke, omg, dp_deltomg, wkspread, cstar, & 45 !!! dtke, dqke, omg, dp_deltomg, wkspread, cstar, & ! changes in notation 46 d_deltat_dcv, d_deltaq_dcv, omg, dp_deltomg, wkspread, cstar, & 45 47 d_deltat_gw, & ! tendencies 46 48 d_deltatw2, d_deltaqw2, d_sigmaw2, d_asigmaw2, d_wdens2, d_awdens2) ! tendencies … … 96 98 ! wdens : densite de poches 97 99 ! omgbdth: flux of Delta_Theta transported by LS omega 98 ! d tKE: differential heating (wake - unpertubed)99 ! d qKE: differential moistening (wake - unpertubed)100 ! d_deltat_dcv : differential heating (wake - unpertubed) 101 ! d_deltat_dcv : differential moistening (wake - unpertubed) 100 102 ! omg : Delta_omg =vertical velocity diff. wake-undist. (Pa/s) 101 103 ! dp_deltomg : vertical gradient of omg (s-1) … … 168 170 ! -------------------- 169 171 170 INTEGER, INTENT(IN):: klon,klev172 INTEGER, INTENT(IN) :: klon,klev 171 173 INTEGER, DIMENSION (klon), INTENT(IN) :: znatsurf 172 174 REAL, DIMENSION (klon, klev), INTENT(IN) :: p, pi … … 197 199 REAL, DIMENSION (klon, klev), INTENT(OUT) :: tx, qx 198 200 REAL, DIMENSION (klon, klev), INTENT(OUT) :: dtls, dqls 199 REAL, DIMENSION (klon, klev), INTENT(OUT) :: dtke, dqke 201 !! REAL, DIMENSION (klon, klev), INTENT(OUT) :: dtke, dqke 202 REAL, DIMENSION (klon, klev), INTENT(OUT) :: d_deltat_dcv, d_deltaq_dcv 200 203 REAL, DIMENSION (klon, klev), INTENT(OUT) :: wkspread ! unused (jyg) 201 204 REAL, DIMENSION (klon, klev), INTENT(OUT) :: omgbdth, omg … … 267 270 ! Sub-timestep tendencies and related variables 268 271 REAL, DIMENSION (klon, klev) :: d_deltatw, d_deltaqw 272 REAL, DIMENSION (klon, klev) :: d_deltat_dadv, d_deltaq_dadv 273 REAL, DIMENSION (klon, klev) :: d_deltat_lsadv, d_deltaq_lsadv 274 REAL, DIMENSION (klon, klev) :: d_deltat_entrp 275 REAL, DIMENSION (klon, klev) :: d_deltat_spread, d_deltaq_spread 276 269 277 REAL, DIMENSION (klon, klev) :: d_tb, d_qb 278 REAL, DIMENSION (klon, klev) :: d_tb_dadv, d_qb_dadv 279 REAL, DIMENSION (klon, klev) :: d_tb_spread, d_qb_spread 280 270 281 REAL, DIMENSION (klon) :: d_wdens, d_awdens, d_sigmaw, d_asigmaw 271 282 REAL, DIMENSION (klon) :: d_sig_gen, d_sig_death, d_sig_col, d_sig_spread, d_sig_bnd … … 279 290 LOGICAL, DIMENSION (klon) :: wk_adv, ok_qx_qw 280 291 292 ! Tests 293 REAL, DIMENSION (klon, klev) :: c5p 294 281 295 ! Autres variables internes 282 296 INTEGER ::isubstep, k, i, igout … … 288 302 REAL :: d_sigmaw_targ 289 303 REAL :: d_wdens_targ 304 305 REAL, DIMENSION (klon) :: dsigspread !rate of change of sigmaw due to spreading 290 306 291 307 REAL, DIMENSION (klon) :: sum_thx, sum_tx, sum_qx, sum_thvx … … 317 333 REAL, DIMENSION (klon, klev) :: omgbdq 318 334 319 REAL, DIMENSION (klon) :: ff, gg320 335 REAL, DIMENSION (klon) :: wape2, cstar2, heff 321 336 … … 327 342 REAL, DIMENSION (klon) :: death_rate 328 343 !! REAL, DIMENSION (klon) :: nat_rate 329 REAL, DIMENSION (klon, klev) :: entr 330 REAL, DIMENSION (klon, klev) :: detr 344 REAL, DIMENSION (klon, klev) :: entr ! total entrainment into wakes (spread + birth) 345 REAL, DIMENSION (klon, klev) :: entr_p ! entrainment into wakes (due to births) 346 REAL, DIMENSION (klon, klev) :: detr ! detrainment from wakes (due to deaths) 331 347 332 348 REAL, DIMENSION(klon) :: sigmaw_in, asigmaw_in ! pour les prints … … 341 357 REAL, DIMENSION (klon) :: omega 342 358 REAL, DIMENSION (klon) :: h_zzz 359 360 !! Bidouilles 361 REAL :: iwkadv 362 REAL :: iokqxqw 343 363 344 364 !print*,'WAKE LJYFz' … … 438 458 dqls(:,:) = 0. 439 459 d_deltat_gw(:,:) = 0. 460 461 detr(:,:) = 0. 462 entr(:,:) = 0. 463 entr_p(:,:) = 0. 464 c5p(:,:) = 0. 465 466 th1(:,:) = 0. 467 th2(:,:) = 0. 468 q1(:,:) = 0. 469 q2(:,:) = 0. 470 440 471 d_tb(:,:) = 0. 472 d_tb_dadv(:,:) = 0. 473 d_tb_spread(:,:) = 0. 474 441 475 d_qb(:,:) = 0. 476 d_qb_dadv(:,:) = 0. 477 d_qb_spread(:,:) = 0. 478 442 479 d_deltatw(:,:) = 0. 480 d_deltat_dadv (:,:) = 0. 481 d_deltat_lsadv (:,:) = 0. 482 d_deltat_dcv (:,:) = 0. 483 d_deltat_spread(:,:) = 0. 484 443 485 d_deltaqw(:,:) = 0. 486 d_deltaq_dadv(:,:) = 0. 487 d_deltaq_lsadv(:,:) = 0. 488 d_deltaq_dcv(:,:) = 0. 489 d_deltaq_spread(:,:) = 0. 490 444 491 d_deltatw2(:,:) = 0. 445 492 d_deltaqw2(:,:) = 0. … … 563 610 tx(:,:) = 0. 564 611 qx(:,:) = 0. 565 d tke(:,:) = 0.566 d qke(:,:) = 0.612 d_deltat_dcv(:,:) = 0. 613 d_deltaq_dcv(:,:) = 0. 567 614 wkspread(:,:) = 0. 568 615 omgbdth(:,:) = 0. … … 883 930 ! 884 931 ! ------------------------------------------------------------------------ 932 ! 885 933 ! wk_adv is the logical flag enabling wake evolution in the time advance 886 934 ! loop … … 888 936 wk_adv(i) = ok_qx_qw(i) .AND. alpha(i) >= 1. 889 937 END DO 938 IF (CPPKEY_IOPHYS_WK) THEN 939 IF (phys_sub) THEN 940 iwkadv=0. 941 IF (wk_adv(1)) iwkadv=1. 942 iokqxqw=0. 943 IF (ok_qx_qw(1)) iokqxqw=1. 944 CALL iophys_ecrit('iwkadv',1,'iwkadv','',iwkadv) 945 CALL iophys_ecrit('iokqxqw',1,'iokqxqw','',iokqxqw) 946 CALL iophys_ecrit('alpha',1,'alpha','',alpha(1)) 947 ENDIF 948 END IF 890 949 IF (prt_level>=10) THEN 891 950 PRINT *, 'wake-4.1, isubstep,wk_adv(igout),cstar(igout),wape(igout), ptop(igout) ', & … … 1021 1080 IF (phys_sub) THEN 1022 1081 CALL iophys_ecrit('ptop',1,'ptop','Pa',ptop) 1082 CALL iophys_ecrit('wape',1,'wape','J/kg',wape) 1083 CALL iophys_ecrit('wgen',1,'wgen','1/(s.m2)',wgen) 1023 1084 CALL iophys_ecrit('sigmaw',1,'sigmaw','',sigmaw) 1024 1085 CALL iophys_ecrit('asigmaw',1,'asigmaw','',asigmaw) 1025 1086 CALL iophys_ecrit('wdens',1,'wdens','1/m2',wdens) 1026 1087 CALL iophys_ecrit('awdens',1,'awdens','1/m2',awdens) 1027 CALL iophys_ecrit('rad_wk',1,'rad_wk','m',rad_wk)1028 CALL iophys_ecrit('arad_wk',1,'arad_wk','m',arad_wk)1029 CALL iophys_ecrit('irad_wk',1,'irad_wk','m',irad_wk)1030 1088 ENDIF 1031 1089 END IF … … 1041 1099 d_dens_gen, d_dens_death, d_dens_col, d_dens_bnd, & 1042 1100 d_adens_death, d_adens_icol, d_adens_acol, d_adens_bnd ) 1101 IF (CPPKEY_IOPHYS_WK) THEN 1102 IF (phys_sub) THEN 1103 CALL iophys_ecrit('rad_wk',1,'rad_wk','m',rad_wk) 1104 CALL iophys_ecrit('arad_wk',1,'arad_wk','m',arad_wk) 1105 CALL iophys_ecrit('irad_wk',1,'irad_wk','m',irad_wk) 1106 ENDIF 1107 END IF 1043 1108 sigmaw=sigmaw-d_sigmaw 1044 1109 asigmaw=asigmaw-d_asigmaw … … 1313 1378 ENDIF 1314 1379 1380 1381 ! ----------------------------------------------------------------- 1382 ! Compute redistribution (advective) term 1383 1384 ! rate of change of sigmaw due to spreading 1385 dsigspread(:) = gfl(:)*cstar(:) 1386 1387 CALL wake_dadv(klon, klev, dtimesub, ph, ppi, wk_adv, kupper, & 1388 omg, dp_deltomg, sigmaw, dsigspread, & 1389 th2, th1, q2, q1, & 1390 d_deltat_dadv, d_deltaq_dadv, d_tb_dadv, d_qb_dadv) 1391 1392 ! For the difference fields: convert to change per second in order to combine with the 1393 ! other terms (d_deltat_ls, d_deltat_cv, d_deltat_gw) 1394 d_deltat_dadv(:,:) = d_deltat_dadv(:,:)/dtimesub 1395 d_deltaq_dadv(:,:) = d_deltaq_dadv(:,:)/dtimesub 1396 ! 1397 ! For the mean fields: tb and qb the computation of the tendencies due to wakes is 1398 ! already complete. 1399 d_tb(:,:) = d_tb_dadv(:,:) 1400 d_qb(:,:) = d_qb_dadv(:,:) 1401 1315 1402 ! ----------------------------------------------------------------- 1316 1403 DO k = 1, klev-1 … … 1318 1405 IF (wk_adv(i) .AND. k<=kupper(i)-1) THEN 1319 1406 ! ----------------------------------------------------------------- 1320 1321 ! Compute redistribution (advective) term 1322 1323 d_deltatw(i, k) = dtimesub/(ph(i,k)-ph(i,k+1))* & 1324 (rrd1*omg(i,k)*sigmaw(i)*d_th1(i,k) - & 1325 rrd2*omg(i,k+1)*(1.-sigmaw(i))*d_th2(i,k+1)- & 1326 (1.-alpha_up(i,k))*omgbdth(i,k)- & 1407 d_deltat_lsadv(i, k) = 1./(ph(i,k)-ph(i,k+1))* & 1408 (-(1.-alpha_up(i,k))*omgbdth(i,k)- & 1327 1409 alpha_up(i,k+1)*omgbdth(i,k+1))*ppi(i, k) 1328 ! print*,'d_d,k_ptop_provis(i)eltatw=', k, d_deltatw(i,k) 1329 1330 d_deltaqw(i, k) = dtimesub/(ph(i,k)-ph(i,k+1))* & 1331 (rrd1*omg(i,k)*sigmaw(i)*d_q1(i,k)- & 1332 rrd2*omg(i,k+1)*(1.-sigmaw(i))*d_q2(i,k+1)- & 1333 (1.-alpha_up(i,k))*omgbdq(i,k)- & 1410 1411 d_deltaq_lsadv(i, k) = 1./(ph(i,k)-ph(i,k+1))* & 1412 (-(1.-alpha_up(i,k))*omgbdq(i,k)- & 1334 1413 alpha_up(i,k+1)*omgbdq(i,k+1)) 1335 ! print*,'d_deltaqw=', k, d_deltaqw(i,k)1336 1337 ! and increment large scale tendencies1338 1339 1340 1341 1342 ! C1343 ! -----------------------------------------------------------------1344 d_tb(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i,k)- &1345 rre2(i)*omg(i,k+1)*(1.-sigmaw(i))*d_th2(i,k+1))/ &1346 (ph(i,k)-ph(i,k+1)) &1347 -sigmaw(i)*(1.-sigmaw(i))*dth(i,k)*(omg(i,k)-omg(i,k+1))/ &1348 (ph(i,k)-ph(i,k+1)) )*ppi(i, k)1349 1350 d_qb(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i,k)- &1351 rre2(i)*omg(i,k+1)*(1.-sigmaw(i))*d_q2(i,k+1))/ &1352 (ph(i,k)-ph(i,k+1)) &1353 -sigmaw(i)*(1.-sigmaw(i))*deltaqw(i,k)*(omg(i,k)-omg(i,k+1))/ &1354 (ph(i,k)-ph(i,k+1)) )1355 ELSE IF (wk_adv(i) .AND. k==kupper(i)) THEN1356 d_tb(i, k) = dtimesub*(rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i,k)/(ph(i,k)-ph(i,k+1)))*ppi(i, k)1357 1358 d_qb(i, k) = dtimesub*(rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i,k)/(ph(i,k)-ph(i,k+1)))1359 1414 1360 1415 END IF … … 1364 1419 ! ------------------------------------------------------------------ 1365 1420 1366 IF (prt_level>=10) THEN 1367 PRINT *, 'wake-4.3, d_deltatw(igout,k) ', (k,d_deltatw(igout,k), k=1,klev) 1368 PRINT *, 'wake-4.3, d_deltaqw(igout,k) ', (k,d_deltaqw(igout,k), k=1,klev) 1421 !! IF (prt_level>=10) THEN 1422 IF (prt_level>=10 .and. wk_adv(igout)) THEN 1423 PRINT *, 'wake-4.3, d_deltat_dadv(igout,k) ', (k,d_deltat_dadv(igout,k), k=1,klev) 1424 PRINT *, 'wake-4.3, d_deltat_lsadv(igout,k) ', (k,d_deltat_lsadv(igout,k), k=1,klev) 1425 PRINT *, 'wake-4.3, d_deltaq_dadv(igout,k) ', (k,d_deltaq_dadv(igout,k), k=1,klev) 1426 PRINT *, 'wake-4.3, d_deltaq_lsadv(igout,k) ', (k,d_deltaq_lsadv(igout,k), k=1,klev) 1369 1427 ENDIF 1370 1428 … … 1376 1434 IF (wk_adv(i) .AND. k<=kupper(i)) THEN 1377 1435 detr(i,k) = - d_sig_death(i) - d_sig_col(i) 1378 entr (i,k) = d_sig_gen(i)1436 entr_p(i,k) = d_sig_gen(i) 1379 1437 ENDIF 1380 1438 ENDDO … … 1386 1444 detr(i, k) = 0. 1387 1445 1388 entr (i, k) = 0.1446 entr_p(i, k) = 0. 1389 1447 ENDIF 1390 1448 ENDDO … … 1426 1484 ! . /(1-sigmaw) 1427 1485 1428 dtke(i, k) = (dtdwn(i,k)/sigmaw(i)-dta(i,k)/(1.-sigmaw(i))) 1429 dqke(i, k) = (dqdwn(i,k)/sigmaw(i)-dqa(i,k)/(1.-sigmaw(i))) 1486 !! Differential heating (d_deltat_dcv) and moistening (d_deltaq_dcv) by deep convection 1487 d_deltat_dcv(i, k) = (dtdwn(i,k)/sigmaw(i)-dta(i,k)/(1.-sigmaw(i))) 1488 !! dtke(i, k) = (dtdwn(i,k)/sigmaw(i)-dta(i,k)/(1.-sigmaw(i))) ! supprime 1489 d_deltaq_dcv(i, k) = (dqdwn(i,k)/sigmaw(i)-dqa(i,k)/(1.-sigmaw(i))) 1490 !! dqke(i, k) = (dqdwn(i,k)/sigmaw(i)-dqa(i,k)/(1.-sigmaw(i))) ! supprime 1430 1491 ! print*,'dtKE= ',dtKE(i,k),' dqKE= ',dqKE(i,k) 1431 1492 … … 1440 1501 !! sigmaw(i)*(1.-sigmaw(i))*dp_deltomg(i, k) 1441 1502 !! 1442 entr(i, k) = entr (i,k) + gfl(i)*cstar(i) + &1503 entr(i, k) = entr_p(i,k) + gfl(i)*cstar(i) + & 1443 1504 sigmaw(i)*(1.-sigmaw(i))*dp_deltomg(i, k) 1444 1505 !>jyg … … 1458 1519 dtimesub 1459 1520 ! write(lunout,*)'wake.F ',i,k, dtimesub,d_deltatw(i,k) 1460 ff(i) = d_deltatw(i, k)/dtimesub1461 1521 1462 1522 ! Sans GW … … 1471 1531 ! GW formule 2 1472 1532 1533 !! Entrainment due to spread is supposed to be included in the differential advection 1534 !! term (d_deltat_dadv); hence only the entrainment due to population dynamics (entr_p) 1535 !! appears in the expression of d_deltatw. 1473 1536 IF (dtimesub*tgw(i,k)<1.E-10) THEN 1474 d_deltatw(i, k) = dtimesub*(ff(i)+dtke(i,k) - & 1475 entr(i,k)*deltatw(i,k)/sigmaw(i) - & 1537 !!! d_deltatw(i, k) = dtimesub*(ff(i)+dtke(i,k) - & ! nouvelle notation 1538 d_deltatw(i, k) = dtimesub*(d_deltat_dadv(i,k)+d_deltat_lsadv(i,k)+d_deltat_dcv(i,k) - & 1539 entr_p(i,k)*deltatw(i,k)/sigmaw(i) - & 1476 1540 (death_rate(i)*sigmaw(i)+detr(i,k))*deltatw(i,k)/(1.-sigmaw(i)) - & ! cc 1477 1541 tgw(i,k)*deltatw(i,k) ) 1478 1542 ELSE 1479 1543 d_deltatw(i, k) = 1/tgw(i, k)*(1-exp(-dtimesub*tgw(i,k)))* & 1480 (ff(i)+dtke(i,k) - & 1481 entr(i,k)*deltatw(i,k)/sigmaw(i) - & 1544 !!! (ff(i)+dtke(i,k) - & ! nouvelle notation 1545 (d_deltat_dadv(i,k)+d_deltat_lsadv(i,k)+d_deltat_dcv(i,k) - & 1546 entr_p(i,k)*deltatw(i,k)/sigmaw(i) - & 1482 1547 (death_rate(i)*sigmaw(i)+detr(i,k))*deltatw(i,k)/(1.-sigmaw(i)) - & 1483 1548 tgw(i,k)*deltatw(i,k) ) … … 1485 1550 1486 1551 dth(i, k) = deltatw(i, k)/ppi(i, k) 1487 1488 gg(i) = d_deltaqw(i, k)/dtimesub 1489 1490 d_deltaqw(i, k) = dtimesub*(gg(i)+dqke(i,k) - & 1491 entr(i,k)*deltaqw(i,k)/sigmaw(i) - & 1552 c5p(i,k) = - entr_p(i,k)*deltatw(i,k)/sigmaw(i) 1553 1554 !! Entrainment due to spread is supposed to be included in the differential advection 1555 !! term (d_deltaq_dadv); hence only the entrainment due to population dynamics (entr_p) 1556 !! appears in the expression of d_deltaqw. 1557 d_deltaqw(i, k) = dtimesub*(d_deltaq_dadv(i,k)+d_deltaq_lsadv(i,k)+d_deltaq_dcv(i,k) - & 1558 entr_p(i,k)*deltaqw(i,k)/sigmaw(i) - & 1492 1559 (death_rate(i)*sigmaw(i)+detr(i,k))*deltaqw(i,k)/(1.-sigmaw(i))) 1493 1560 ! cc … … 1501 1568 END DO 1502 1569 1570 !! IF (prt_level>=10) THEN 1571 IF (prt_level>=10 .and. wk_adv(igout)) THEN 1572 PRINT *, 'wake-4.4, isubstep= ', isubstep,' c5p(igout,k) ', (k,c5p(igout,k), k=1,klev) 1573 PRINT *, 'wake-4.4, isubstep= ', isubstep,' deltatw(igout,k) ', (k,deltatw(igout,k), k=1,klev) 1574 PRINT *, 'wake-4.4, isubstep= ', isubstep,' d_deltat_dcv(igout,k) ', (k,d_deltat_dcv(igout,k), k=1,klev) 1575 PRINT *, 'wake-4.4, isubstep= ', isubstep,' tgw(igout,k)*deltatw(igout,k) ', (k,tgw(igout,k)*deltatw(igout,k), k=1,klev) 1576 PRINT *, 'wake-4.4, isubstep= ', isubstep,' death_rate(igout) ', death_rate(igout) 1577 PRINT *, 'wake-4.4, isubstep= ', isubstep,' detr(igout,k) ', (k,detr(igout,k), k=1,klev) 1578 PRINT *, 'wake-4.4, isubstep= ', isubstep,' d_deltatw(igout,k) ', (k,d_deltatw(igout,k), k=1,klev) 1579 PRINT *, 'wake-4.4, isubstep= ', isubstep,' d_deltaqw(igout,k) ', (k,d_deltaqw(igout,k), k=1,klev) 1580 PRINT *, 'wake-4.4, isubstep= ', isubstep,' d_tb(igout,k) ', (k,d_tb(igout,k), k=1,klev) 1581 PRINT *, 'wake-4.4, isubstep= ', isubstep,' d_qb(igout,k) ', (k,d_qb(igout,k), k=1,klev) 1582 ENDIF 1583 1584 ! 1585 IF (CPPKEY_IOPHYS_WK) THEN 1586 IF (phys_sub) THEN 1587 DO k = 1,klev 1588 d_deltat_entrp(:,k) = - entr_p(:,k)*deltatw(:,k)/sigmaw(:) 1589 ENDDO 1590 CALL iophys_ecrit('d_deltatw',klev,'d_deltatw','K/s',d_deltatw(:,1:klev)) 1591 CALL iophys_ecrit('d_deltat_dadv',klev,'d_deltat_dadv','K/s',d_deltat_dadv(:,1:klev)) 1592 CALL iophys_ecrit('d_deltat_lsadv',klev,'d_deltat_lsadv','K/s',d_deltat_lsadv(:,1:klev)) 1593 CALL iophys_ecrit('d_deltat_dcv',klev,'d_deltat_dcv','K/s',d_deltat_dcv(:,1:klev)) 1594 CALL iophys_ecrit('d_deltat_entrp',klev,'d_deltat_entrp','K/s',d_deltat_entrp(:,1:klev)) 1595 1596 ENDIF 1597 END IF 1503 1598 1504 1599 ! Scale tendencies so that water vapour remains positive in w and x. … … 1822 1917 wape(i) = -RG*hw0(i)*(av_dth(i)+epsim1*(av_thx(i)*av_dq(i) + & 1823 1918 av_dth(i)*av_qx(i)+av_dth(i)*av_dq(i)))/av_thvx(i) 1919 !!print *,'XXXXwake wape(i), hw0(i), av_dth(i), av_thx(i), av_dq(i), av_qx(i), av_thvx(i) ', & 1920 !! wape(i), hw0(i), av_dth(i), av_thx(i), av_dq(i), av_qx(i), av_thvx(i) 1824 1921 END IF 1825 1922 END DO … … 1879 1976 IF (CPPKEY_IOPHYS_WK) THEN 1880 1977 IF (.not.phys_sub) CALL iophys_ecrit('wape_b',1,'wape_b','J/kg',wape) 1978 IF (.not.phys_sub) CALL iophys_ecrit('alpha_mod',1,'alpha_modulation','-',alpha_tot) 1881 1979 END IF 1882 1980 IF (prt_level>=10) THEN … … 2136 2234 IF (CPPKEY_IOPHYS_WK) THEN 2137 2235 IF (.not.phys_sub) THEN 2138 CALL iophys_ecrit('fip',1,'fip','J/kg',fip)2139 CALL iophys_ecrit('hw',1,'hw','J/kg',hw)2140 CALL iophys_ecrit('ptop',1,'ptop','J/kg',ptop)2141 CALL iophys_ecrit('wdens',1,'wdens','J/kg',wdens)2142 CALL iophys_ecrit('awdens',1,'awdens','m',awdens)2143 CALL iophys_ecrit('sigmaw',1,'sigmaw','m',sigmaw)2144 CALL iophys_ecrit('asigmaw',1,'asigmaw','m',asigmaw)2145 !2146 CALL iophys_ecrit('rad_wk',1,'rad_wk','J/kg',rad_wk)2147 CALL iophys_ecrit('arad_wk',1,'arad_wk','J/kg',arad_wk)2148 CALL iophys_ecrit('irad_wk',1,'irad_wk','J/kg',irad_wk)2149 !2150 2236 call iophys_ecrit('d_wdens2',1,'d_wdens2','',d_wdens2) 2151 2237 call iophys_ecrit('d_dens_gen2',1,'d_dens_gen2','',d_dens_gen2) … … 2281 2367 IF (CPPKEY_IOPHYS_WK) THEN 2282 2368 IF (.not.phys_sub) CALL iophys_ecrit('wape_c',1,'wape_c','J/kg',wape) 2283 END IF 2369 IF (iflag_wk_pop_dyn >= 3) THEN 2370 IF (.not.phys_sub) THEN 2371 CALL iophys_ecrit('fip',1,'fip','J/kg',fip) 2372 CALL iophys_ecrit('hw',1,'hw','J/kg',hw) 2373 CALL iophys_ecrit('ptop',1,'ptop','J/kg',ptop) 2374 CALL iophys_ecrit('wdens',1,'wdens','J/kg',wdens) 2375 CALL iophys_ecrit('awdens',1,'awdens','m',awdens) 2376 CALL iophys_ecrit('sigmaw',1,'sigmaw','m',sigmaw) 2377 CALL iophys_ecrit('asigmaw',1,'asigmaw','m',asigmaw) 2378 ! 2379 CALL iophys_ecrit('rad_wk',1,'rad_wk','J/kg',rad_wk) 2380 CALL iophys_ecrit('arad_wk',1,'arad_wk','J/kg',arad_wk) 2381 CALL iophys_ecrit('irad_wk',1,'irad_wk','J/kg',irad_wk) 2382 ENDIF ! (.not.phys_sub) 2383 ENDIF ! (iflag_wk_pop_dyn >= 3) 2384 END IF !(CPPKEY_IOPHYS_WK) 2284 2385 2285 2386 … … 2363 2464 2364 2465 ! Input 2365 REAL qb(nlon, nl), d_qb(nlon, nl)2366 REAL deltaqw(nlon, nl), d_deltaqw(nlon, nl)2367 REAL sigmaw(nlon), d_sigmaw(nlon)2368 LOGICAL wk_adv(nlon)2369 INTEGER nl, nlon2466 INTEGER, INTENT(IN) :: nl, nlon 2467 REAL, DIMENSION(nlon, nl), INTENT(IN) :: qb, d_qb 2468 REAL, DIMENSION(nlon, nl), INTENT(IN) :: deltaqw, d_deltaqw 2469 REAL, DIMENSION(nlon), INTENT(IN) :: sigmaw, d_sigmaw 2470 LOGICAL, DIMENSION(nlon), INTENT(IN) :: wk_adv 2370 2471 ! Output 2371 REAL alpha(nlon)2472 REAL, DIMENSION(nlon), INTENT(INOUT) :: alpha 2372 2473 ! Internal variables 2373 2474 REAL zeta(nlon, nl) … … 3202 3303 REAL, DIMENSION (klon) :: is_wk !! mean area of individual inactive wakes 3203 3304 REAL, DIMENSION (klon) :: tau_wk_inv !! tau = life time of wakes 3204 REAL :: tau_wk_inv_min3205 3305 REAL, DIMENSION (klon) :: tau_prime !! tau_prime = life time of actives wakes 3206 3306 REAL :: d_wdens_targ, d_sigmaw_targ … … 3229 3329 !! 3230 3330 3331 ! Initialization 3332 tau_wk_inv(:) = 0. 3333 ! Initialization of output variables 3334 rad_wk(:) = 0. 3335 arad_wk(:) = 0. 3336 irad_wk(:) = 0. 3337 gfl(:) = 0. 3338 agfl(:) = 0. 3339 ! 3340 d_wdens(:) = 0. 3341 d_awdens(:) = 0. 3342 d_sigmaw(:) = 0. 3343 d_asigmaw (:) = 0. 3344 ! 3345 d_sig_gen(:) = 0. 3346 d_sig_death(:) = 0. 3347 d_sig_col(:) = 0. 3348 d_sig_spread(:) = 0. 3349 d_sig_bnd(:) = 0. 3350 d_asig_death(:) = 0. 3351 d_asig_aicol(:) = 0. 3352 d_asig_iicol(:) = 0. 3353 d_asig_spread(:) = 0. 3354 d_asig_bnd(:) = 0. 3355 d_dens_gen(:) = 0. 3356 d_dens_death(:) = 0. 3357 d_dens_col(:) = 0. 3358 d_dens_bnd(:) = 0. 3359 d_adens_death(:) = 0. 3360 d_adens_icol(:) = 0. 3361 d_adens_acol(:) = 0. 3362 d_adens_bnd(:) = 0. 3363 3364 3231 3365 DO i = 1, klon 3232 3366 IF (wk_adv(i)) THEN … … 3252 3386 DO i = 1, klon 3253 3387 IF (wk_adv(i)) THEN 3254 tau_wk_inv(i) = max( (3.*cstar(i))/(irad_wk(i)*((cstar(i)/cstart)**1.5 - 1)), 0.) 3255 tau_wk_inv_min = min(tau_wk_inv(i), 1./dtimesub) 3388 ! print *,'ZZZZpopdyn3 wgen(1) ',wgen(1) 3389 ! print *,'ZZZZpopdyn3 cstar(1) ',cstar(1) 3390 ! print *,'ZZZZpopdyn3 isigmaw(1) ',isigmaw(1) 3391 ! print *,'ZZZZpopdyn3 gfl(1) ',gfl(1) 3392 !! tau_wk_inv(i) = max( (3.*cstar(i))/(irad_wk(i)*((cstar(i)/cstart)**1.5 - 1)), 0.) 3393 tau_wk_inv(i) = min(max( (3.*cstar(i))/(irad_wk(i)*((cstar(i)/cstart)**1.5 - 1)), 0.), 1./dtimesub) 3256 3394 tau_prime(i) = tau_cv 3257 3395 3258 3396 d_sig_gen(i) = wgen(i)*aa0 3259 d_sig_death(i) = - isigmaw(i)*tau_wk_inv _min3397 d_sig_death(i) = - isigmaw(i)*tau_wk_inv(i) 3260 3398 d_sig_col(i) = - 2.*igfl(i)*cstar(i)*iwdens(i)*(2.*is_wk(i)-aa0) 3261 3399 d_sig_spread(i) = gfl(i)*cstar(i) … … 3266 3404 d_sig_spread(i) = d_sig_spread(i)*dtimesub 3267 3405 d_sigmaw(i) = d_sig_gen(i) + d_sig_death(i) + d_sig_col(i) + d_sig_spread(i) 3268 IF (CPPKEY_IOPHYS_WK) THEN3269 IF (phys_sub) call iophys_ecrit('d_sigmaw0',1,'d_sigmaw0','',d_sigmaw)3270 END IF3271 3272 3406 3273 3407 d_sigmaw_targ = max(d_sigmaw(i), sigmad-sigmaw(i)) … … 3277 3411 d_sigmaw(i) = d_sigmaw_targ 3278 3412 !! d_sigmaw(i) = max(d_sigmaw(i), sigmad-sigmaw(i)) 3279 IF (CPPKEY_IOPHYS_WK) THEN3280 IF (phys_sub) THEN3281 call iophys_ecrit('tauwk_inv',1,'tau_wk_inv_min','',tau_wk_inv_min)3282 call iophys_ecrit('d_sigmaw',1,'d_sigmaw','',d_sigmaw)3283 call iophys_ecrit('d_sig_gen',1,'d_sig_gen','',d_sig_gen)3284 call iophys_ecrit('d_sig_death',1,'d_sig_death','',d_sig_death)3285 call iophys_ecrit('d_sig_col',1,'d_sig_col','',d_sig_col)3286 call iophys_ecrit('d_sig_spread',1,'d_sig_spread','',d_sig_spread)3287 call iophys_ecrit('d_sig_bnd',1,'d_sig_bnd','',d_sig_bnd)3288 ENDIF3289 END IF3290 3413 d_asig_death(i) = - asigmaw(i)/tau_prime(i) 3291 3414 d_asig_aicol(i) = (agfl(i)*iwdens(i) + igfl(i)*awdens(i))*cstar(i)*is_wk(i) … … 3298 3421 d_asig_spread(i) = d_asig_spread(i)*dtimesub 3299 3422 d_asigmaw(i) = d_sig_gen(i) + d_asig_death(i) + d_asig_aicol(i) + d_asig_iicol(i) + d_asig_spread(i) 3300 IF (CPPKEY_IOPHYS_WK) THEN 3301 IF (phys_sub) call iophys_ecrit('d_asigmaw0',1,'d_asigmaw0','',d_asigmaw) 3302 END IF 3303 3423 ! 3304 3424 d_sigmaw_targ = min(max(d_asigmaw(i),-asigmaw(i)), sigmaw(i)-asigmaw(i)) 3305 3425 !! d_dens_bnd(i) = d_dens_bnd(i) + d_sigmaw_targ - d_sigmaw(i) 3306 3426 d_asig_bnd(i) = d_sigmaw_targ - d_asigmaw(i) 3307 3427 d_asigmaw(i) = d_sigmaw_targ 3308 IF (CPPKEY_IOPHYS_WK) THEN3309 IF (phys_sub) THEN3310 call iophys_ecrit('d_asigmaw',1,'d_asigmaw','',d_asigmaw)3311 call iophys_ecrit('d_asig_death',1,'d_asig_death','',d_asig_death)3312 call iophys_ecrit('d_asig_aicol',1,'d_asig_aicol','',d_asig_aicol)3313 call iophys_ecrit('d_asig_iicol',1,'d_asig_iicol','',d_asig_iicol)3314 call iophys_ecrit('d_asig_spread',1,'d_asig_spread','',d_asig_spread)3315 call iophys_ecrit('d_asig_bnd',1,'d_asig_bnd','',d_asig_bnd)3316 ENDIF3317 END IF3318 3428 d_dens_gen(i) = wgen(i) 3319 d_dens_death(i) = - iwdens(i)*tau_wk_inv _min3429 d_dens_death(i) = - iwdens(i)*tau_wk_inv(i) 3320 3430 d_dens_col(i) = - 2.*gfl(i)*cstar(i)*wdens(i) 3321 3431 ! … … 3329 3439 d_dens_bnd(i) = d_wdens_targ - d_wdens(i) 3330 3440 d_wdens(i) = d_wdens_targ 3331 IF (CPPKEY_IOPHYS_WK) THEN3332 IF (phys_sub) THEN3333 call iophys_ecrit('d_wdens',1,'d_wdens','',d_wdens)3334 call iophys_ecrit('d_dens_gen',1,'d_dens_gen','',d_dens_gen)3335 call iophys_ecrit('d_dens_death',1,'d_dens_death','',d_dens_death)3336 call iophys_ecrit('d_dens_col',1,'d_dens_col','',d_dens_col)3337 ENDIF3338 END IF3339 3340 3441 d_adens_death(i) = -awdens(i)/tau_prime(i) 3341 3442 d_adens_icol(i) = 2.*igfl(i)*cstar(i)*iwdens(i) … … 3346 3447 d_adens_acol(i) = d_adens_acol(i)*dtimesub 3347 3448 d_awdens(i) = d_dens_gen(i) + d_adens_death(i) + d_adens_icol(i) + d_adens_acol(i) 3348 IF (CPPKEY_IOPHYS_WK) THEN3349 IF (phys_sub) THEN3350 call iophys_ecrit('d_awdens',1,'d_awdens','',d_awdens)3351 call iophys_ecrit('d_adens_death',1,'d_adens_death','',d_adens_death)3352 call iophys_ecrit('d_adens_icol',1,'d_adens_icol','',d_adens_icol)3353 call iophys_ecrit('d_adens_acol',1,'d_adens_acol','',d_adens_acol)3354 ENDIF3355 END IF3356 3449 d_wdens_targ = min(max(d_awdens(i),-awdens(i)), wdens(i)-awdens(i)) 3357 3450 !! d_dens_bnd(i) = d_dens_bnd(i) + d_wdens_targ - d_wdens(i) … … 3370 3463 ENDIF 3371 3464 ENDDO 3465 IF (CPPKEY_IOPHYS_WK) THEN 3466 IF (phys_sub) THEN 3467 call iophys_ecrit('d_sigmaw0',1,'d_sigmaw0','',d_sigmaw) 3468 ! 3469 call iophys_ecrit('cstar',1,'cstar','',cstar) 3470 call iophys_ecrit('wgen_pd3',1,'wgen_popdyn3','',wgen) 3471 call iophys_ecrit('tauwk_inv',1,'tau_wk_inv','',tau_wk_inv) 3472 call iophys_ecrit('d_sigmaw',1,'d_sigmaw','',d_sigmaw) 3473 call iophys_ecrit('d_sig_gen',1,'d_sig_gen','',d_sig_gen) 3474 call iophys_ecrit('d_sig_death',1,'d_sig_death','',d_sig_death) 3475 call iophys_ecrit('d_sig_col',1,'d_sig_col','',d_sig_col) 3476 call iophys_ecrit('d_sig_spread',1,'d_sig_spread','',d_sig_spread) 3477 call iophys_ecrit('d_sig_bnd',1,'d_sig_bnd','',d_sig_bnd) 3478 ! 3479 call iophys_ecrit('d_asigmaw0',1,'d_asigmaw0','',d_asigmaw) 3480 ! 3481 call iophys_ecrit('d_asigmaw',1,'d_asigmaw','',d_asigmaw) 3482 call iophys_ecrit('d_asig_death',1,'d_asig_death','',d_asig_death) 3483 call iophys_ecrit('d_asig_aicol',1,'d_asig_aicol','',d_asig_aicol) 3484 call iophys_ecrit('d_asig_iicol',1,'d_asig_iicol','',d_asig_iicol) 3485 call iophys_ecrit('d_asig_spread',1,'d_asig_spread','',d_asig_spread) 3486 call iophys_ecrit('d_asig_bnd',1,'d_asig_bnd','',d_asig_bnd) 3487 ! 3488 call iophys_ecrit('d_wdens',1,'d_wdens','',d_wdens) 3489 call iophys_ecrit('d_dens_gen',1,'d_dens_gen','',d_dens_gen) 3490 call iophys_ecrit('d_dens_death',1,'d_dens_death','',d_dens_death) 3491 call iophys_ecrit('d_dens_col',1,'d_dens_col','',d_dens_col) 3492 ! 3493 call iophys_ecrit('d_awdens',1,'d_awdens','',d_awdens) 3494 call iophys_ecrit('d_adens_death',1,'d_adens_death','',d_adens_death) 3495 call iophys_ecrit('d_adens_icol',1,'d_adens_icol','',d_adens_icol) 3496 call iophys_ecrit('d_adens_acol',1,'d_adens_acol','',d_adens_acol) 3497 ENDIF 3498 END IF 3499 3372 3500 3373 3501 IF (prt_level >= 10) THEN … … 3386 3514 RETURN 3387 3515 END SUBROUTINE wake_popdyn_3 3516 3517 SUBROUTINE wake_dadv(klon, klev, dtime, ph, ppi, wk_adv, kupper, & 3518 deltomg, dp_deltomg, sigmaw, dsigspread, & 3519 thw, thx, qw, qx, & 3520 d_deltat_dadv, d_deltaq_dadv, d_tb_dadv, d_qb_dadv) 3521 3522 USE lmdz_wake_ini , ONLY : flag_dadv_implicit 3523 3524 IMPLICIT NONE 3525 3526 INTEGER, INTENT(IN) :: klon, klev 3527 REAL, INTENT(IN) :: dtime 3528 REAL, DIMENSION (klon, klev+1), INTENT(IN) :: ph 3529 REAL, DIMENSION (klon, klev), INTENT(IN) :: ppi 3530 LOGICAL, DIMENSION (klon), INTENT(IN) :: wk_adv 3531 INTEGER, DIMENSION (klon), INTENT(IN) :: kupper 3532 REAL, DIMENSION (klon, klev), INTENT(IN) :: deltomg 3533 REAL, DIMENSION (klon, klev), INTENT(IN) :: dp_deltomg 3534 REAL, DIMENSION (klon), INTENT(IN) :: sigmaw 3535 REAL, DIMENSION (klon), INTENT(IN) :: dsigspread 3536 REAL, DIMENSION (klon, klev), INTENT(IN) :: thw ! component # 1 3537 REAL, DIMENSION (klon, klev), INTENT(IN) :: thx ! component # 2 3538 REAL, DIMENSION (klon, klev), INTENT(IN) :: qw ! component # 1 3539 REAL, DIMENSION (klon, klev), INTENT(IN) :: qx ! component # 2 3540 3541 REAL, DIMENSION (klon, klev), INTENT(OUT) :: d_deltat_dadv 3542 REAL, DIMENSION (klon, klev), INTENT(OUT) :: d_deltaq_dadv 3543 REAL, DIMENSION (klon, klev), INTENT(OUT) :: d_tb_dadv 3544 REAL, DIMENSION (klon, klev), INTENT(OUT) :: d_qb_dadv 3545 3546 ! Internal variables 3547 INTEGER :: i, k 3548 REAL, DIMENSION (klon, klev) :: entr_s ! entrainment into wakes due to spread 3549 REAL, DIMENSION (klon, klev) :: thb, qb 3550 REAL, DIMENSION (klon, klev) :: delta_th, delta_q 3551 3552 ! Tests 3553 3554 ! Arrays used in the implicit scheme 3555 REAL, DIMENSION (klon) :: rr11, rr12, rr21, rr22 3556 3557 REAL, DIMENSION (klon, klev) :: aa11, aa12, aa21, aa22 3558 REAL, DIMENSION (klon, klev) :: bb11, bb12, bb21, bb22 3559 REAL, DIMENSION (klon, klev) :: cc11, cc12, cc21, cc22 3560 3561 REAL, DIMENSION (klon, klev) :: alpha11, alpha12, alpha21, alpha22 3562 REAL, DIMENSION (klon, klev) :: beta11, beta12, beta21, beta22 3563 REAL, DIMENSION (klon, klev) :: gamma11, gamma12, gamma21, gamma22 3564 REAL, DIMENSION (klon, klev) :: ai11, ai12, ai21, ai22 ! inverse of alpha 3565 3566 REAL, DIMENSION (klon, klev) :: xt1, xt2, xq1, xq2 3567 REAL, DIMENSION (klon, klev) :: yt1, yt2, yq1, yq2 3568 REAL, DIMENSION (klon, klev) :: zt1, zt2, zq1, zq2 3569 REAL, DIMENSION (klon, klev) :: th1, th2, q1, q2 3570 3571 REAL :: coef, det 3572 3573 REAL, DIMENSION (klon,klev) :: xt1inv, xt2inv, xq1inv, xq2inv 3574 3575 ! Arrays used in the explicit scheme (vertical gradients) 3576 REAL, DIMENSION (klon, klev) :: d_thx, d_qx 3577 REAL, DIMENSION (klon, klev) :: d_thw, d_qw 3578 REAL, DIMENSION (klon, klev) :: d_dth, d_dq 3579 3580 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3581 3582 entr_s(:,:) = 0. 3583 delta_th(:,:) = 0. 3584 3585 d_deltat_dadv(:,:) = 0. 3586 d_deltaq_dadv(:,:) = 0. 3587 d_tb_dadv(:,:) = 0. 3588 d_qb_dadv(:,:) = 0. 3589 3590 3591 rr11(:) = sigmaw(:) 3592 rr12(:) = 1.-sigmaw(:) 3593 rr21(:) = 1. 3594 rr22(:) = -1. 3595 3596 DO k = 1, klev 3597 DO i = 1,klon 3598 IF (wk_adv(i) .AND. k<=kupper(i)+1) THEN 3599 thb(i,k) = rr11(i)*thw(i,k)+rr12(i)*thx(i,k) 3600 delta_th(i,k) = rr21(i)*thw(i,k)+rr22(i)*thx(i,k) 3601 3602 qb(i,k) = rr11(i)*qw(i,k)+rr12(i)*qx(i,k) 3603 delta_q(i,k) = rr21(i)*qw(i,k)+rr22(i)*qx(i,k) 3604 ENDIF 3605 ENDDO 3606 ENDDO 3607 3608 DO i = 1, klon 3609 entr_s(i,klev) = 0. 3610 ENDDO 3611 3612 DO k = 1, klev-1 3613 DO i = 1,klon 3614 IF (wk_adv(i) .AND. k<=kupper(i)+1) THEN 3615 !! entr_s(i,k) = dsigspread(i) - sigmaw(i)*(1.-sigmaw(i))*(deltomg(i,k+1)-deltomg(i,k)) / & 3616 !! (ph(i,k)-ph(i,k+1)) 3617 3618 entr_s(i,k) = dsigspread(i) + sigmaw(i)*(1.-sigmaw(i))*dp_deltomg(i,k) 3619 !! print *,'dadv, k, dp_deltomg(i,k), (deltomg(i,k)-deltomg(i,k+1))/(ph(i,k)-ph(i,k+1)) ', & 3620 !! k, dp_deltomg(i,k), (deltomg(i,k)-deltomg(i,k+1))/(ph(i,k)-ph(i,k+1)) 3621 3622 ENDIF 3623 ENDDO 3624 ENDDO 3625 3626 ! ------------------------------------------------------------------------------------------- 3627 ! Depending on flag_dadv_implicit, use implicit upstream scheme or explicit upstream scheme 3628 ! ------------------------------------------------------------------------------------------- 3629 3630 IF (flag_dadv_implicit) THEN 3631 3632 ! Implicit scheme : solve for d_deltat_dadv and d_tb_dadv 3633 ! (and similarly for d_deltaq_dadv and d_qb_dadv). 3634 ! The system to be inverted is block-tridiagonal with 2x2 blocks. 3635 ! ----------------------------------------------------------------------------------------- 3636 3637 ! Matrix indexing: Theta_w Theta_x 3638 ! 3639 ! / 3640 ! Theta_b | A11 A12 | 3641 ! | | 3642 ! delta_theta | A21 A22 | 3643 ! / 3644 ! Tridiagonal matrix 3645 ! / 3646 ! | aa(1) bb(1) 0 | 3647 ! | cc(2) aa(2) bb(2) 0 | 3648 ! | 0 cc(3) aa(3) bb(3) | 3649 ! | | 3650 ! . . . . 3651 ! 3652 ! . . . . 3653 ! | | 3654 ! | cc(n-2) aa(n-2) bb(n-2) 0 | 3655 ! | 0 cc(n-1) aa(n-1) bb(n-1) | 3656 ! 0 cc(n) aa(n) / 3657 ! ----------------------------------------------------------------------------------------- 3658 3659 !! Building the tridiagonal matrix 3660 DO i = 1,klon 3661 IF (wk_adv(i)) THEN 3662 k = kupper(i) 3663 coef = dtime/(ph(i,k)-ph(i,k+1)) 3664 aa11(i,k) = rr11(i)+coef*sigmaw(i)*(1.-sigmaw(i))*deltomg(i,k) 3665 aa12(i,k) = rr12(i) 3666 aa21(i,k) = rr21(i)+coef*( dsigspread(i)/sigmaw(i)*(ph(i,k)-ph(i,k+1)) + & 3667 (1.-sigmaw(i))*deltomg(i,k) ) 3668 aa22(i,k) = rr22(i)+coef*(-dsigspread(i)/sigmaw(i)*(ph(i,k)-ph(i,k+1)) - & 3669 deltomg(i,k) ) 3670 3671 cc11(i,k) = 0. 3672 cc12(i,k) = -coef*sigmaw(i)*(1.-sigmaw(i))*deltomg(i,k) 3673 cc21(i,k) = 0. 3674 cc22(i,k) = coef*sigmaw(i)*deltomg(i,k) 3675 ENDIF ! (wk_adv(i)) 3676 ENDDO 3677 DO k = 2, klev-1 3678 DO i = 1,klon 3679 IF (wk_adv(i) .AND. k<=kupper(i)-1) THEN 3680 coef = dtime/(ph(i,k)-ph(i,k+1)) 3681 aa11(i,k) = rr11(i)+coef*sigmaw(i)*(1.-sigmaw(i))*deltomg(i,k) 3682 aa12(i,k) = rr12(i)+coef*sigmaw(i)*(1.-sigmaw(i))*deltomg(i,k+1) 3683 aa21(i,k) = rr21(i)+coef*( dsigspread(i)/sigmaw(i)*(ph(i,k)-ph(i,k+1)) + & 3684 (1.-sigmaw(i))*deltomg(i,k) ) 3685 aa22(i,k) = rr22(i)+coef*(-dsigspread(i)/sigmaw(i)*(ph(i,k)-ph(i,k+1)) + & 3686 (1.-sigmaw(i))*(deltomg(i,k+1)-deltomg(i,k)) - & 3687 sigmaw(i)*deltomg(i,k) ) 3688 3689 bb11(i,k) = -coef*sigmaw(i)*(1.-sigmaw(i))*deltomg(i,k+1) 3690 bb12(i,k) = 0. 3691 bb21(i,k) = -coef*(1.-sigmaw(i))*deltomg(i,k+1) 3692 bb22(i,k) = 0. 3693 3694 cc11(i,k) = 0. 3695 cc12(i,k) = -coef*sigmaw(i)*(1.-sigmaw(i))*deltomg(i,k) 3696 cc21(i,k) = 0. 3697 cc22(i,k) = coef*sigmaw(i)*deltomg(i,k) 3698 ENDIF ! (wk_adv(i) .AND. k<=kupper(i)) 3699 ENDDO 3700 ENDDO 3701 DO i = 1,klon 3702 IF (wk_adv(i)) THEN 3703 coef = dtime/(ph(i,1)-ph(i,2)) 3704 aa11(i,1) = rr11(i)+coef*sigmaw(i)*(1.-sigmaw(i))*deltomg(i,1) 3705 aa12(i,1) = rr12(i)+coef*sigmaw(i)*(1.-sigmaw(i))*deltomg(i,2) 3706 aa21(i,1) = rr21(i)+coef*( dsigspread(i)/sigmaw(i)*(ph(i,1)-ph(i,2)) + & 3707 (1.-sigmaw(i))*deltomg(i,1) ) 3708 aa22(i,1) = rr22(i)+coef*(-dsigspread(i)/sigmaw(i)*(ph(i,1)-ph(i,2)) + & 3709 (1.-sigmaw(i))*(deltomg(i,2)-deltomg(i,1)) - & 3710 sigmaw(i)*deltomg(i,1) ) 3711 3712 bb11(i,1) = -coef*sigmaw(i)*(1.-sigmaw(i))*deltomg(i,2) 3713 bb12(i,1) = 0. 3714 bb21(i,1) = -coef*(1.-sigmaw(i))*deltomg(i,2) 3715 bb22(i,1) = 0. 3716 ENDIF ! (wk_adv(i)) 3717 ENDDO 3718 3719 !! printing the tridiagonal matrix 3720 !!! First row 3721 !! k = 1 3722 !! print 1789, k, aa11(1,1), aa12(1,1), bb11(1,1), bb12(1,1) 3723 !! print 1789, k, aa21(1,1), aa22(1,1), bb21(1,1), bb22(1,1) 3724 !!1789 FORMAT(1X, I3, 3(4X, 2E13.5)) 3725 !! coef = dtime/(ph(1,k)-ph(1,k+1)) 3726 !! print *,'rr22(1), coef, dsigspread(1), sigmaw(1), deltomg(1,1), deltomg(1,2) ', & 3727 !! rr22(1), coef, dsigspread(1), sigmaw(1), deltomg(1,1), deltomg(1,2) 3728 !! 3729 !!! Rows 2 to klev-1 3730 !! DO k = 2, klev-1 3731 !! print 1789, k, cc11(1,k), cc12(1,k), aa11(1,k), aa12(1,k), bb11(1,k), bb12(1,k) 3732 !! print 1789, k, cc21(1,k), cc22(1,k), aa21(1,k), aa22(1,k), bb21(1,k), bb22(1,k) 3733 !! coef = dtime/(ph(1,k)-ph(1,k+1)) 3734 !! print *,'rr22(1), coef, dsigspread(1), sigmaw(1), deltomg(1,k), deltomg(1,k+1) ', & 3735 !! rr22(1), coef, dsigspread(1), sigmaw(1), deltomg(1,k), deltomg(1,k+1) 3736 !! ENDDO 3737 !! 3738 !!! Row klev 3739 !! print 1789, klev, cc11(1,klev), cc12(1,klev), aa11(1,klev), aa12(1,klev) 3740 !! print 1789, klev, cc21(1,klev), cc22(1,klev), aa21(1,klev), aa22(1,klev) 3741 !! coef = dtime/(ph(1,klev)-ph(1,klev+1)) 3742 !! print *,'rr22(1), coef, dsigspread(1), sigmaw(1), deltomg(1,klev) ', & 3743 !! rr22(1), coef, dsigspread(1), sigmaw(1), deltomg(1,klev) 3744 3745 3746 !! Downward loop 3747 3748 xt1(:,:) = thb(:,:) 3749 xt2(:,:) = delta_th(:,:) 3750 xq1(:,:) = qb(:,:) 3751 xq2(:,:) = delta_q(:,:) 3752 3753 DO i = 1,klon 3754 IF (wk_adv(i)) THEN 3755 k = kupper(i) 3756 alpha11(:,k)=aa11(:,k) 3757 alpha12(:,k)=aa12(:,k) 3758 alpha21(:,k)=aa21(:,k) 3759 alpha22(:,k)=aa22(:,k) 3760 beta11(:,k)=0. 3761 beta12(:,k)=0. 3762 beta21(:,k)=0. 3763 beta22(:,k)=0. 3764 yt1(i,k) = xt1(i,k) 3765 yt2(i,k) = xt2(i,k) 3766 yq1(i,k) = xq1(i,k) 3767 yq2(i,k) = xq2(i,k) 3768 ENDIF ! (wk_adv(i)) 3769 ENDDO 3770 DO i = 1,klon 3771 IF (wk_adv(i)) THEN 3772 k = kupper(i) 3773 det=alpha11(i,k)*alpha22(i,k) - alpha12(i,k)*alpha21(i,k) 3774 ai11(i,k)= alpha22(i,k)/det 3775 ai12(i,k)=-alpha12(i,k)/det 3776 ai21(i,k)=-alpha21(i,k)/det 3777 ai22(i,k)= alpha11(i,k)/det 3778 zt1(i,k) = ai11(i,k)*yt1(i,k) + ai12(i,k)*yt2(i,k) 3779 zt2(i,k) = ai21(i,k)*yt1(i,k) + ai22(i,k)*yt2(i,k) 3780 zq1(i,k) = ai11(i,k)*yq1(i,k) + ai12(i,k)*yq2(i,k) 3781 zq2(i,k) = ai21(i,k)*yq1(i,k) + ai22(i,k)*yq2(i,k) 3782 ENDIF ! (wk_adv(i)) 3783 ENDDO 3784 3785 DO k = klev, 2, -1 3786 DO i = 1,klon 3787 IF (wk_adv(i) .AND. k<=kupper(i)) THEN 3788 gamma11(i,k) = ai11(i,k)*cc11(i,k) + ai12(i,k)*cc21(i,k) 3789 gamma12(i,k) = ai11(i,k)*cc12(i,k) + ai12(i,k)*cc22(i,k) 3790 gamma21(i,k) = ai21(i,k)*cc11(i,k) + ai22(i,k)*cc21(i,k) 3791 gamma22(i,k) = ai21(i,k)*cc12(i,k) + ai22(i,k)*cc22(i,k) 3792 3793 alpha11(i,k-1) = aa11(i,k-1) - ( bb11(i,k-1)*gamma11(i,k)+bb12(i,k-1)*gamma21(i,k) ) 3794 alpha12(i,k-1) = aa12(i,k-1) - ( bb11(i,k-1)*gamma12(i,k)+bb12(i,k-1)*gamma22(i,k) ) 3795 alpha21(i,k-1) = aa21(i,k-1) - ( bb21(i,k-1)*gamma11(i,k)+bb22(i,k-1)*gamma21(i,k) ) 3796 alpha22(i,k-1) = aa22(i,k-1) - ( bb21(i,k-1)*gamma12(i,k)+bb22(i,k-1)*gamma22(i,k) ) 3797 3798 beta11(i,k-1) = bb11(i,k-1)*ai11(i,k)+bb12(i,k-1)*ai21(i,k) 3799 beta12(i,k-1) = bb11(i,k-1)*ai12(i,k)+bb12(i,k-1)*ai22(i,k) 3800 beta21(i,k-1) = bb21(i,k-1)*ai11(i,k)+bb22(i,k-1)*ai21(i,k) 3801 beta22(i,k-1) = bb21(i,k-1)*ai12(i,k)+bb22(i,k-1)*ai22(i,k) 3802 3803 yt1(i,k-1) = xt1(i,k-1) - ( beta11(i,k-1)*yt1(i,k) +beta12(i,k-1)*yt2(i,k) ) 3804 yt2(i,k-1) = xt2(i,k-1) - ( beta21(i,k-1)*yt1(i,k) +beta22(i,k-1)*yt2(i,k) ) 3805 yq1(i,k-1) = xq1(i,k-1) - ( beta11(i,k-1)*yq1(i,k) +beta12(i,k-1)*yq2(i,k) ) 3806 yq2(i,k-1) = xq2(i,k-1) - ( beta21(i,k-1)*yq1(i,k) +beta22(i,k-1)*yq2(i,k) ) 3807 3808 det=alpha11(i,k-1)*alpha22(i,k-1) - alpha12(i,k-1)*alpha21(i,k-1) 3809 ai11(i,k-1)= alpha22(i,k-1)/det 3810 ai12(i,k-1)=-alpha12(i,k-1)/det 3811 ai21(i,k-1)=-alpha21(i,k-1)/det 3812 ai22(i,k-1)= alpha11(i,k-1)/det 3813 3814 zt1(i,k-1) = ai11(i,k-1)*yt1(i,k-1)+ai12(i,k-1)*yt2(i,k-1) 3815 zt2(i,k-1) = ai21(i,k-1)*yt1(i,k-1)+ai22(i,k-1)*yt2(i,k-1) 3816 zq1(i,k-1) = ai11(i,k-1)*yq1(i,k-1)+ai12(i,k-1)*yq2(i,k-1) 3817 zq2(i,k-1) = ai21(i,k-1)*yq1(i,k-1)+ai22(i,k-1)*yq2(i,k-1) 3818 ENDIF ! (wk_adv(i) .AND. k<=kupper(i)) 3819 ENDDO 3820 ENDDO 3821 3822 !! Upward loop 3823 3824 DO i = 1,klon 3825 IF (wk_adv(i)) THEN 3826 th1(i,1) = zt1(i,1) 3827 th2(i,1) = zt2(i,1) 3828 q1(i,1) = zq1(i,1) 3829 q2(i,1) = zq2(i,1) 3830 3831 d_tb_dadv(i,1) = ( rr11(i)*(th1(i,1)-thw(i,1))+rr12(i)*(th2(i,1)-thx(i,1)) )*ppi(i,1) 3832 d_deltat_dadv(i,1) = ( rr21(i)*(th1(i,1)-thw(i,1))+rr22(i)*(th2(i,1)-thx(i,1)) )*ppi(i,1) 3833 d_qb_dadv(i,1) = rr11(i)*(q1(i,1) -qw(i,1)) +rr12(i)*(q2(i,1)-qx(i,1)) 3834 d_deltaq_dadv(i,1) = rr21(i)*(q1(i,1) -qw(i,1)) +rr22(i)*(q2(i,1)-qx(i,1)) 3835 ENDIF ! (wk_adv(i)) 3836 ENDDO 3837 3838 DO k = 2, klev 3839 DO i = 1,klon 3840 IF (wk_adv(i) .AND. k<=kupper(i)) THEN 3841 th1(i,k) = zt1(i,k) - ( gamma11(i,k)*th1(i,k-1)+gamma12(i,k)*th2(i,k-1) ) 3842 th2(i,k) = zt2(i,k) - ( gamma21(i,k)*th1(i,k-1)+gamma22(i,k)*th2(i,k-1) ) 3843 q1(i,k) = zq1(i,k) - ( gamma11(i,k)*q1(i,k-1) +gamma12(i,k)*q2(i,k-1) ) 3844 q2(i,k) = zq2(i,k) - ( gamma21(i,k)*q1(i,k-1) +gamma22(i,k)*q2(i,k-1) ) 3845 3846 d_tb_dadv(i,k) = ( rr11(i)*(th1(i,k)-thw(i,k))+rr12(i)*(th2(i,k)-thx(i,k)) )*ppi(i,k) 3847 d_deltat_dadv(i,k) = ( rr21(i)*(th1(i,k)-thw(i,k))+rr22(i)*(th2(i,k)-thx(i,k)) )*ppi(i,k) 3848 d_qb_dadv(i,k) = rr11(i)*(q1(i,k)-qw(i,k)) +rr12(i)*(q2(i,k)-qx(i,k)) 3849 d_deltaq_dadv(i,k) = rr21(i)*(q1(i,k)-qw(i,k)) +rr22(i)*(q2(i,k)-qx(i,k)) 3850 ENDIF ! (wk_adv(i) .AND. k<=kupper(i)) 3851 ENDDO 3852 ENDDO 3853 3854 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3855 !!!!!!!!!!!!!!!!!! Verification de l'inversion !!!!!!!!!!!!!!!!!!!!!!! 3856 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3857 !! 3858 !! DO i = 1,klon 3859 !! 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) 3860 !! 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) 3861 !! 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) 3862 !! 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) 3863 !! ENDDO 3864 !! 3865 !! DO k = 2, klev-1 3866 !! DO i = 1,klon 3867 !! 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) & 3868 !! + cc11(i,k)*th1(i,k-1) + cc12(i,k)*th2(i,k-1) 3869 !! 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) & 3870 !! + cc21(i,k)*th1(i,k-1) + cc22(i,k)*th2(i,k-1) 3871 !! 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) & 3872 !! + cc11(i,k)*q1(i,k-1) + cc12(i,k)*q2(i,k-1) 3873 !! 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) & 3874 !! + cc21(i,k)*q1(i,k-1) + cc22(i,k)*q2(i,k-1) 3875 !! ENDDO 3876 !! ENDDO 3877 !! 3878 !! DO i = 1,klon 3879 !! 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) 3880 !! 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) 3881 !! 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) 3882 !! 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) 3883 !! ENDDO 3884 !! 3885 !! DO k = 1, 20 3886 !! IF (abs(xt1inv(1,k)-xt1(1,k)) .GT. 1.e-15*xt1(1,k) ) THEN 3887 !! print *,'wake_dadv, k, xt1inv(1,k), xt1(1,k), xt1inv(1,k)-xt1(1,k) ', & 3888 !! k, xt1inv(1,k), xt1(1,k), xt1inv(1,k)-xt1(1,k) 3889 !! ENDIF 3890 !! IF (abs(xt2inv(1,k)-xt2(1,k)) .GT. 1.e-15*xt2(1,k) ) THEN 3891 !! print *,'wake_dadv, k, xt2inv(1,k), xt2(1,k), xt2inv(1,k)-xt2(1,k) ', & 3892 !! k, xt2inv(1,k), xt2(1,k), xt2inv(1,k)-xt2(1,k) 3893 !! ENDIF 3894 !! IF (abs(xq1inv(1,k)-xq1(1,k)) .GT. 1.e-15*xq1(1,k) ) THEN 3895 !! print *,'wake_dadv, k, xq1inv(1,k), xq1(1,k), xq1inv(1,k)-xq1(1,k) ', & 3896 !! k, xq1inv(1,k), xq1(1,k), xq1inv(1,k)-xq1(1,k) 3897 !! ENDIF 3898 !! IF (abs(xq2inv(1,k)-xq2(1,k)) .GT. 1.e-15*xq2(1,k) ) THEN 3899 !! print *,'wake_dadv, k, xq2inv(1,k), xq2(1,k), xq2inv(1,k)-xq2(1,k) ', & 3900 !! k, xq2inv(1,k), xq2(1,k), xq2inv(1,k)-xq2(1,k) 3901 !! ENDIF 3902 !! ENDDO 3903 3904 ELSE ! (flag_dadv_implicit) 3905 3906 ! Explicit scheme : compute directly d_deltat_dadv and d_tb_dadv 3907 ! (and similarly for d_deltaq_dadv and d_qb_dadv). 3908 ! ----------------------------------------------------------------------------------------- 3909 3910 DO i = 1, klon 3911 IF (wk_adv(i)) THEN !!! nrlmd 3912 d_thx(i, 1) = 0. 3913 d_thw(i, 1) = 0. 3914 d_dth(i, 1) = 0. 3915 d_qx(i, 1) = 0. 3916 d_qw(i, 1) = 0. 3917 d_dq(i, 1) = 0. 3918 END IF 3919 END DO 3920 3921 DO k = 2, klev 3922 DO i = 1, klon 3923 IF (wk_adv(i) .AND. k<=kupper(i)+1) THEN 3924 d_thx(i, k) = thx(i, k-1) - thx(i, k) 3925 d_thw(i, k) = thw(i, k-1) - thw(i, k) 3926 d_dth(i, k) = delta_th(i, k-1) - delta_th(i, k) 3927 d_qx(i, k) = qx(i, k-1) - qx(i, k) 3928 d_qw(i, k) = qw(i, k-1) - qw(i, k) 3929 d_dq(i, k) = delta_q(i, k-1) - delta_q(i, k) 3930 END IF ! (wk_adv(i) .AND. k<=kupper(i)+1) 3931 END DO 3932 END DO 3933 3934 DO k = 1, klev-1 3935 DO i = 1, klon 3936 IF (wk_adv(i) .AND. k<=kupper(i)-1) THEN 3937 d_deltat_dadv(i, k) = dtime/(ph(i,k)-ph(i,k+1))* & 3938 (rr22(i)*deltomg(i,k)*sigmaw(i)*d_thx(i,k) - & 3939 rr21(i)*deltomg(i,k+1)*(1.-sigmaw(i))*d_thw(i,k+1) )*ppi(i, k) - & 3940 dtime*entr_s(i,k)*delta_th(i,k)/sigmaw(i)*ppi(i, k) 3941 ! 3942 d_deltaq_dadv(i, k) = dtime/(ph(i,k)-ph(i,k+1))* & 3943 (rr22(i)*deltomg(i,k)*sigmaw(i)*d_qx(i,k)- & 3944 rr21(i)*deltomg(i,k+1)*(1.-sigmaw(i))*d_qw(i,k+1) ) - & 3945 dtime*entr_s(i,k)*delta_q(i,k)/sigmaw(i) 3946 3947 ! and increment large scale tendencies 3948 d_tb_dadv(i, k) = dtime*((rr12(i)*deltomg(i,k)*sigmaw(i)*d_thx(i,k)- & 3949 rr11(i)*deltomg(i,k+1)*(1.-sigmaw(i))*d_thw(i,k+1))/ & 3950 (ph(i,k)-ph(i,k+1)) & 3951 -sigmaw(i)*(1.-sigmaw(i))*delta_th(i,k)*(deltomg(i,k)-deltomg(i,k+1))/ & 3952 (ph(i,k)-ph(i,k+1)) )*ppi(i, k) 3953 3954 d_qb_dadv(i, k) = dtime*((rr12(i)*deltomg(i,k)*sigmaw(i)*d_qx(i,k)- & 3955 rr11(i)*deltomg(i,k+1)*(1.-sigmaw(i))*d_qw(i,k+1))/ & 3956 (ph(i,k)-ph(i,k+1)) & 3957 -sigmaw(i)*(1.-sigmaw(i))*delta_q(i,k)*(deltomg(i,k)-deltomg(i,k+1))/ & 3958 (ph(i,k)-ph(i,k+1)) ) 3959 ELSE IF (wk_adv(i) .AND. k==kupper(i)) THEN 3960 d_tb_dadv(i, k) = dtime*(rr12(i)*deltomg(i, k)*sigmaw(i)*d_thx(i, k)/(ph(i, k)-ph(i, k+1)))*ppi(i, k) 3961 3962 d_qb_dadv(i, k) = dtime*(rr12(i)*deltomg(i, k)*sigmaw(i)*d_qx(i, k)/(ph(i, k)-ph(i, k+1))) 3963 END IF ! (wk_adv(i) .AND. k<=kupper(i)-1) 3964 END DO 3965 END DO 3966 3967 ENDIF! (flag_dadv_implicit) 3968 3969 END SUBROUTINE wake_dadv 3388 3970 3389 3971 END MODULE lmdz_wake -
LMDZ6/trunk/libf/phylmd/lmdz_wake_ini.f90
r5434 r5761 55 55 INTEGER, SAVE, PROTECTED :: iflag_wk_profile 56 56 !$OMP THREADPRIVATE(iflag_wk_profile) 57 58 LOGICAL, SAVE, PROTECTED :: flag_dadv_implicit 59 !$OMP THREADPRIVATE(flag_dadv_implicit) 57 60 58 61 INTEGER, SAVE, PROTECTED :: wk_nsub … … 250 253 CALL getin_p('wk_frac_int_delta_t', wk_frac_int_delta_t) 251 254 255 flag_dadv_implicit = .FALSE. 256 CALL getin_p('flag_dadv_implicit', flag_dadv_implicit) 257 252 258 CALL getin_p('CPPKEY_IOPHYS_WK', CPPKEY_IOPHYS_WK) 253 259
Note: See TracChangeset
for help on using the changeset viewer.