Changeset 4368 for LMDZ6/branches/Ocean_skin/libf/phylmdiso/phyredem.F90
- Timestamp:
- Dec 6, 2022, 12:01:16 AM (22 months ago)
- Location:
- LMDZ6/branches/Ocean_skin
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Ocean_skin
- Property svn:mergeinfo changed
-
LMDZ6/branches/Ocean_skin/libf/phylmdiso/phyredem.F90
r3940 r4368 23 23 wake_delta_pbl_tke, zmax0, f0, sig1, w01, & 24 24 wake_deltat, wake_deltaq, wake_s, wake_dens, & 25 awake_dens, cv_gen, & 25 26 wake_cstar, & 26 27 wake_pe, wake_fip, fm_therm, entr_therm, & … … 38 39 USE iostart, ONLY: open_restartphy, close_restartphy, enddef_restartphy, put_field, put_var 39 40 USE traclmdz_mod, ONLY : traclmdz_to_restart 40 USE infotrac_phy, ONLY: type _trac, niadv, tname, nbtr, nqo,itr_indice41 USE infotrac_phy, ONLY: types_trac, nqtot, tracers, nbtr, niso 41 42 #ifdef ISO 42 USE infotrac_phy, ONLY: itr_indice,niso,ntraciso43 43 #ifdef ISOVERIF 44 44 USE isotopes_verif_mod 45 45 #endif 46 46 #endif 47 USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send 47 USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send, carbon_cycle_rad, RCO2_glo 48 48 USE indice_sol_mod, ONLY: nbsrf, is_oce, is_sic, is_ter, is_lic, epsfra 49 49 USE surface_data, ONLY: type_ocean, version_ocean … … 56 56 include "dimsoil.h" 57 57 include "clesphys.h" 58 include " thermcell.h"58 include "alpale.h" 59 59 include "compbl.h" 60 60 !====================================================================== … … 74 74 REAL Rland_ice(niso,klon) 75 75 #endif 76 INTEGER iq ! C Risi77 76 78 77 INTEGER nid, nvarid, idim1, idim2, idim3 … … 85 84 CHARACTER (len=2) :: str2 86 85 CHARACTER (len=256) :: nam, lnam 87 INTEGER :: it, i iq, pass86 INTEGER :: it, iq, pass 88 87 89 88 !====================================================================== … … 131 130 132 131 ! co2_ppm0 : initial value of atmospheric CO2 133 tab_cntrl(16) = co2_ppm0 132 ! tab_cntrl(16) = co2_ppm0 133 134 ! PC -- initial value of RCO2 for the radiation scheme 135 ! tab_cntrl(17) = co2_ppm * 1.0e-06 * RMCO2 / RMD 136 IF (carbon_cycle_rad) tab_cntrl(17) = RCO2_glo 137 !PRINT*, "PC : phyredem RCO2_glo =",RCO2_glo 134 138 135 139 DO pass=1,2 ! pass=1 netcdf definition ; pass=2 netcdf write … … 185 189 CALL put_field_srf1(pass,"TS","Temperature",ftsol(:,:)) 186 190 187 !! CALL put_field_srf1(pass,"DELTA_TS","w-x surface temperature difference", delta_tsurf(:,:)) 188 CALL put_field_srf1(pass,"DELTATS","w-x surface temperature difference", delta_tsurf(:,:))189 190 ! CALL put_field_srf1(pass,"BETA_S","Aridity factor", beta_aridity(:,:))191 CALL put_field_srf1(pass,"BETAS","Aridity factor", beta_aridity(:,:))191 IF (iflag_pbl>1 .AND. iflag_wake>=1 .AND. iflag_pbl_split >=1) then 192 CALL put_field_srf1(pass, "DELTATS", & 193 "w-x surface temperature difference", delta_tsurf(:,:)) 194 CALL put_field_srf1(pass, "BETAS", "Aridity factor", beta_aridity(:,:)) 195 end IF 192 196 ! End surface variables 193 197 … … 313 317 CALL put_field(pass,"WAKE_DENS", "Wake num. /unit area", wake_dens) 314 318 319 CALL put_field(pass,"AWAKE_DENS", "Active Wake num. /unit area", awake_dens) 320 321 CALL put_field(pass,"CV_GEN", "CB birth rate", cv_gen) 322 315 323 CALL put_field(pass,"WAKE_CSTAR", "WAKE_CSTAR", wake_cstar) 316 324 … … 342 350 343 351 344 ! trs from traclmdz_mod 345 IF (type_trac == 'lmdz') THEN 346 CALL traclmdz_to_restart(trs) 347 DO it=1, nbtr 348 !! iiq=niadv(it+2) ! jyg 349 !iiq=niadv(it+nqo) ! C Risi: on efface pour remplacer: 350 iq=itr_indice(it) ! jyg 351 iiq=niadv(iq) ! jyg 352 CALL put_field(pass,"trs_"//tname(iiq), "", trs(:, it)) 353 END DO 352 IF (ANY(types_trac == 'co2i') .OR. ANY(types_trac == 'inco')) THEN 354 353 IF (carbon_cycle_cpl) THEN 355 354 IF (.NOT. ALLOCATED(co2_send)) THEN … … 360 359 CALL put_field(pass,"co2_send", "co2_ppm for coupling", co2_send) 361 360 END IF 361 362 ! trs from traclmdz_mod 363 ELSE IF (ANY(types_trac == 'lmdz')) THEN 364 CALL traclmdz_to_restart(trs) 365 it = 0 366 DO iq = 1, nqtot 367 IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE 368 it = it+1 369 CALL put_field(pass,"trs_"//tracers(iq)%name, "", trs(:, it)) 370 END DO 362 371 END IF 363 372 … … 408 417 ENDDO ! DO pass=1,2 ! pass=1 netcdf definition ; pass=2 netcdf write 409 418 410 411 412 419 !$OMP BARRIER 413 420 … … 419 426 420 427 IMPLICIT NONE 421 INTEGER, INTENT(IN) 428 INTEGER, INTENT(IN) :: pass 422 429 CHARACTER(LEN=*), INTENT(IN) :: nam, lnam 423 430 REAL, INTENT(IN) :: field(:,:) … … 482 489 xtrain_fall,xtsnow_fall, ql_ancien,xtl_ancien,qs_ancien,xts_ancien, & 483 490 xtsol,fxtevap 484 USE infotrac_phy,ONLY: niso, nt raciso491 USE infotrac_phy,ONLY: niso, ntiso 485 492 !USE control_mod 486 493 USE indice_sol_mod, ONLY: nbsrf 487 494 USE iostart, ONLY: put_field 488 USE isotopes_mod, ONLY: striso,iso_eau495 USE isotopes_mod, ONLY: isoName,iso_eau 489 496 #ifdef ISOVERIF 490 497 USE isotopes_verif_mod … … 501 508 #include "dimsoil.h" 502 509 #include "clesphys.h" 503 #include " thermcell.h"510 #include "alpale.h" 504 511 #include "compbl.h" 505 512 ! inputs 506 513 !REAL xtsol(niso,klon) 507 514 REAL xtsnow(niso,klon,nbsrf) 508 !REAL xtevap(nt raciso,klon,nbsrf)515 !REAL xtevap(ntiso,klon,nbsrf) 509 516 REAL xtrun_off_lic_0(niso,klon) 510 517 REAL Rland_ice(niso,klon) … … 521 528 CHARACTER*7 str7 522 529 CHARACTER*2 str2 523 CHARACTER*50 striso_sortie530 CHARACTER*50 outiso 524 531 integer lnblnk 525 532 #ifdef ISOTRAC … … 563 570 #endif 564 571 565 do ixt=1,ntraciso 566 567 if (ixt.le.niso) then 568 striso_sortie=striso(ixt) 569 else 570 #ifdef ISOTRAC 571 iiso=index_iso(ixt) 572 izone=index_zone(ixt) 573 striso_sortie=striso(iiso)//strtrac(izone) 574 #else 575 write(*,*) 'phyredem 546: ixt,ntraciso=', ixt,ntraciso 576 stop 577 #endif 578 endif !if (ixt.le.niso) then 579 write(*,*) 'phyredem 550: ixt,striso_sortie=',ixt,striso_sortie(1:lnblnk(striso_sortie)) 572 do ixt=1,ntiso 573 574 outiso = TRIM(isoName(ixt)) 575 i = INDEX(outiso, '_', .TRUE.) 576 outiso = outiso(1:i-1)//outiso(i+1:LEN_TRIM(outiso)) 577 write(*,*) 'phyredem 550: ixt,outiso=',ixt,TRIM(outiso) 580 578 581 579 iso_tmp_lonsrf(:,:)=fxtevap(ixt,:,:) 582 CALL put_field_srf1(pass,"XTEVAP"//striso_sortie(1:lnblnk(striso_sortie)), & 583 & "Evaporation de surface",iso_tmp_lonsrf) 580 CALL put_field_srf1(pass, "XTEVAP"//TRIM(outiso), "Evaporation de surface",iso_tmp_lonsrf) 584 581 585 582 iso_tmp_lonsrf(:,:)=xtsnow(ixt,:,:) 586 CALL put_field_srf1(pass,"XTSNOW"//striso_sortie(1:lnblnk(striso_sortie)), & 587 & "NEIGE",iso_tmp_lonsrf) 583 CALL put_field_srf1(pass, "XTSNOW"//TRIM(outiso), "NEIGE", iso_tmp_lonsrf) 588 584 589 585 iso_tmp(:)=xtrain_fall(ixt,:) 590 CALL put_field(pass,"xtrain_f"//striso_sortie(1:lnblnk(striso_sortie)), & 591 & "precipitation liquide",iso_tmp) 586 CALL put_field(pass, "xtrain_f"//TRIM(outiso), "precipitation liquide",iso_tmp) 592 587 593 588 iso_tmp(:)=xtsnow_fall(ixt,:) 594 CALL put_field(pass,"xtsnow_f"//striso_sortie(1:lnblnk(striso_sortie)), & 595 & "precipitation solide",iso_tmp) 589 CALL put_field(pass, "xtsnow_f"//TRIM(outiso), "precipitation solide",iso_tmp) 596 590 597 591 iso_tmp_lonlev(:,:)=xt_ancien(ixt,:,:) 598 CALL put_field(pass,"XTANCIEN"//striso_sortie(1:lnblnk(striso_sortie)), & 599 & "QANCIEN",iso_tmp_lonlev) 592 CALL put_field(pass, "XTANCIEN"//TRIM(outiso), "QANCIEN", iso_tmp_lonlev) 600 593 601 594 iso_tmp_lonlev(:,:)=xtl_ancien(ixt,:,:) 602 CALL put_field(pass,"XTLANCIEN"//striso_sortie(1:lnblnk(striso_sortie)), & 603 & "QLANCIEN",iso_tmp_lonlev) 595 CALL put_field(pass, "XTLANCIEN"//TRIM(outiso), "QLANCIEN", iso_tmp_lonlev) 604 596 605 597 iso_tmp_lonlev(:,:)=xts_ancien(ixt,:,:) 606 CALL put_field(pass,"XTSANCIEN"//striso_sortie(1:lnblnk(striso_sortie)), & 607 & "QSANCIEN",iso_tmp_lonlev) 598 CALL put_field(pass, "XTSANCIEN"//TRIM(outiso), "QSANCIEN", iso_tmp_lonlev) 608 599 609 600 iso_tmp_lonlev(:,:)=wake_deltaxt(ixt,:,:) 610 CALL put_field(pass,"WAKE_DELTAXT"//striso_sortie(1:lnblnk(striso_sortie)), & 611 & "WAKE_DELTAQ",iso_tmp_lonlev) 601 CALL put_field(pass,"WAKE_DELTAXT"//TRIM(outiso), "WAKE_DELTAQ", iso_tmp_lonlev) 612 602 613 603 iso_tmp(:)=xtrun_off_lic_0(ixt,:) 614 CALL put_field(pass,"XTRUNOFFLIC0"//striso_sortie(1:lnblnk(striso_sortie)), & 615 & "Runofflic0",iso_tmp) 604 CALL put_field(pass,"XTRUNOFFLIC0"//TRIM(outiso), "Runofflic0", iso_tmp) 616 605 617 606 iso_tmp_lonlev(:,:)=wake_deltaxt(ixt,:,:) 618 CALL put_field(pass,"WAKE_DELTAXT"//striso_sortie(1:lnblnk(striso_sortie)), & 619 & "WAKE_DELTAXT",iso_tmp_lonlev) 607 CALL put_field(pass,"WAKE_DELTAXT"//TRIM(outiso), "WAKE_DELTAXT",iso_tmp_lonlev) 620 608 621 609 ! variables seulement pour niso: … … 623 611 624 612 iso_tmp(:)=xtsol(ixt,:) 625 CALL put_field(pass,"XTSOL"//striso_sortie(1:lnblnk(striso_sortie)), & 626 & "Eau dans le sol (mm)",iso_tmp) 613 CALL put_field(pass, "XTSOL"//TRIM(outiso), "Eau dans le sol (mm)",iso_tmp) 627 614 628 615 iso_tmp(:)=Rland_ice(ixt,:) 629 CALL put_field(pass,"Rland_ice"//striso_sortie(1:lnblnk(striso_sortie)), & 630 & "ratio land ice",iso_tmp) 616 CALL put_field(pass, "Rland_ice"//TRIM(outiso), "ratio land ice", iso_tmp) 631 617 632 618 endif ! if (ixt.le.niso) then
Note: See TracChangeset
for help on using the changeset viewer.