Changeset 3841
- Timestamp:
- Jul 8, 2025, 12:37:46 PM (3 days ago)
- Location:
- trunk/LMDZ.VENUS/libf/phyvenus
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.VENUS/libf/phyvenus/chemparam_mod.F90
r3755 r3841 42 42 43 43 real, dimension(:,:), save, allocatable :: no_emission 44 !$OMP THREADPRIVATE(no_emission) 44 45 real, dimension(:,:), save, allocatable :: o2_emission 46 !$OMP THREADPRIVATE(o2_emission) 45 47 46 48 !---------------------------------------------------------------------------- -
trunk/LMDZ.VENUS/libf/phyvenus/clesphys_mod.F90
r3835 r3841 1 1 MODULE clesphys_mod 2 2 IMPLICIT NONE 3 SAVE4 3 5 LOGICAL :: cycle_diurne, soil_model 6 LOGICAL :: ok_orodr, ok_orolf, ok_gw_nonoro 7 LOGICAL :: ok_kzmin, tuneupperatm, ok_ionchem, ok_jonline 8 LOGICAL :: ok_iondiff 9 LOGICAL :: callnlte, callnirco2, callthermos 10 LOGICAL :: ok_cloud, ok_chem, reinit_trac, ok_sedim 11 LOGICAL :: ok_clmain, physideal, startphy_file 4 LOGICAL,SAVE :: cycle_diurne, soil_model 5 !$OMP THREADPRIVATE(cycle_diurne, soil_model) 6 LOGICAL,SAVE :: ok_orodr, ok_orolf, ok_gw_nonoro 7 !$OMP THREADPRIVATE(ok_orodr, ok_orolf, ok_gw_nonoro) 8 LOGICAL,SAVE :: ok_kzmin, tuneupperatm, ok_ionchem, ok_jonline 9 !$OMP THREADPRIVATE(ok_kzmin, tuneupperatm, ok_ionchem, ok_jonline) 10 LOGICAL,SAVE :: ok_iondiff 11 !$OMP THREADPRIVATE(ok_iondiff) 12 LOGICAL,SAVE :: callnlte, callnirco2, callthermos 13 !$OMP THREADPRIVATE(callnlte, callnirco2, callthermos) 14 LOGICAL,SAVE :: ok_cloud, ok_chem, reinit_trac, ok_sedim 15 !$OMP THREADPRIVATE(ok_cloud, ok_chem, reinit_trac, ok_sedim) 16 LOGICAL,SAVE :: ok_clmain, physideal, startphy_file 17 !$OMP THREADPRIVATE(ok_clmain, physideal, startphy_file) 12 18 13 INTEGER :: nbapp_rad, nbapp_chem, iflag_con, iflag_ajs 14 INTEGER :: lev_histins, lev_histday, lev_histmth 15 INTEGER :: tr_scheme, cl_scheme 16 INTEGER :: nircorr, nltemodel, solvarmod 17 INTEGER :: nb_mode 18 INTEGER :: solarchoice 19 INTEGER,SAVE :: nbapp_rad, nbapp_chem, iflag_con, iflag_ajs 20 !$OMP THREADPRIVATE(nbapp_rad, nbapp_chem, iflag_con, iflag_ajs) 21 INTEGER,SAVE :: lev_histins, lev_histday, lev_histmth 22 !$OMP THREADPRIVATE(lev_histins, lev_histday, lev_histmth) 23 INTEGER,SAVE :: tr_scheme, cl_scheme 24 !$OMP THREADPRIVATE(tr_scheme, cl_scheme) 25 INTEGER,SAVE :: nircorr, nltemodel, solvarmod 26 !$OMP THREADPRIVATE(nircorr, nltemodel, solvarmod) 27 INTEGER,SAVE :: nb_mode 28 !$OMP THREADPRIVATE(nb_mode) 29 INTEGER,SAVE :: solarchoice 30 !$OMP THREADPRIVATE(solarchoice) 19 31 20 REAL :: ecriphy 21 REAL :: z0, lmixmin 22 REAL :: ksta, inertie 23 REAL :: euveff, fixed_euv_value 32 REAL,SAVE :: ecriphy 33 !$OMP THREADPRIVATE(ecriphy) 34 REAL,SAVE :: z0, lmixmin 35 !$OMP THREADPRIVATE(z0, lmixmin) 36 REAL,SAVE :: ksta, inertie 37 !$OMP THREADPRIVATE(ksta, inertie) 38 REAL,SAVE :: euveff, fixed_euv_value 39 !$OMP THREADPRIVATE(euveff, fixed_euv_value) 24 40 25 41 END MODULE clesphys_mod -
trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90
r3835 r3841 1 ! 2 ! $Header: /home/cvsroot/LMDZ4/libf/phylmd/conf_phys.F90,v 1.3 2005/02/07 15:15:31 fairhead Exp $ 3 ! 4 ! 5 ! 1 module conf_phys_mod 2 3 implicit none 4 5 contains 6 6 7 7 subroutine conf_phys(ok_journe, ok_mensuel, ok_instan, & … … 9 9 use init_print_control_mod, only: init_print_control 10 10 use print_control_mod, only: lunout 11 use mod_phys_lmdz_para, only: is_master 11 12 use ioipsl_getin_p_mod, only: getin_p 12 13 use age_of_air_mod, only: ok_aoa, reinit_aoa, lev_aoa … … 93 94 nbapp_rad = 12 94 95 call getin_p('nbapp_rad',nbapp_rad) 95 print*,"nbapp_rad",nbapp_rad 96 96 97 !Config Key = nbapp_chem 97 98 !Config Desc = Frequence d'appel a la chimie … … 576 577 ! 577 578 ! 579 if (is_master) then ! only master needs to print this info 578 580 579 581 write(lunout,*)' ##############################################' 580 write(lunout,*)' Configuration des parametres de la physique: '582 write(lunout,*)' Physics configuration and parameters: ' 581 583 write(lunout,*)' cycle_diurne = ', cycle_diurne 582 584 write(lunout,*)' soil_model = ', soil_model … … 631 633 write(lunout,*)' ok_iondiff = ',ok_iondiff 632 634 635 endif ! of if (is_master) 636 633 637 end subroutine conf_phys 634 638 639 end module conf_phys_mod -
trunk/LMDZ.VENUS/libf/phyvenus/iostart.F90
r3719 r3841 28 28 PUBLIC get_field,get_var,put_field,put_var 29 29 PUBLIC open_startphy,close_startphy,open_restartphy,close_restartphy 30 PUBLIC enddef_restartphy 30 31 31 32 CONTAINS … … 140 141 LOGICAL,OPTIONAL,INTENT(OUT) :: found 141 142 142 REAL :: field_glo(klon_glo,field_size) ! field on global grid143 REAL :: field_glo_tmp(klon_glo,field_size)144 INTEGER :: ind_cell_glo_glo(klon_glo) ! cell indexes on global grid143 REAL,ALLOCATABLE :: field_glo(:,:) ! field on global grid 144 REAL,ALLOCATABLE :: field_glo_tmp(:,:) 145 INTEGER,ALLOCATABLE :: ind_cell_glo_glo(:) ! cell indexes on global grid 145 146 LOGICAL :: tmp_found 146 147 INTEGER :: varid 147 148 INTEGER :: ierr, i 148 149 150 IF (is_master) THEN 151 ALLOCATE(ind_cell_glo_glo(klon_glo)) 152 ALLOCATE(field_glo(klon_glo,field_size)) 153 ALLOCATE(field_glo_tmp(klon_glo,field_size)) 154 ELSE 155 ALLOCATE(ind_cell_glo_glo(0)) 156 ALLOCATE(field_glo(0,0)) 157 ENDIF 158 149 159 ! gather columns indexes on global grid 150 160 CALL gather(ind_cell_glo,ind_cell_glo_glo) … … 347 357 ierr = NF90_DEF_DIM (nid_restart, "horizon_klevp1", klon_glo*klevp1, idim4) 348 358 349 ierr = NF90_ENDDEF(nid_restart)350 ENDIF 359 ! ierr = NF90_ENDDEF(nid_restart) 360 ENDIF ! of IF (is_master) 351 361 352 362 END SUBROUTINE open_restartphy 353 363 364 SUBROUTINE enddef_restartphy 365 USE netcdf, ONLY: NF90_ENDDEF 366 USE mod_phys_lmdz_para, ONLY: is_master 367 IMPLICIT NONE 368 INTEGER :: ierr 369 370 IF (is_master) ierr = NF90_ENDDEF(nid_restart) 371 372 END SUBROUTINE enddef_restartphy 373 354 374 SUBROUTINE close_restartphy 355 375 USE netcdf, ONLY: NF90_CLOSE … … 365 385 366 386 367 SUBROUTINE put_field_r1(field_name,title,field) 368 IMPLICIT NONE 387 SUBROUTINE put_field_r1(pass,field_name,title,field) 388 IMPLICIT NONE 389 INTEGER,INTENT(IN) :: pass 369 390 CHARACTER(LEN=*),INTENT(IN) :: field_name 370 391 CHARACTER(LEN=*),INTENT(IN) :: title 371 392 REAL,INTENT(IN) :: field(:) 372 393 373 CALL put_field_rgen( field_name,title,field,1)394 CALL put_field_rgen(pass,field_name,title,field,1) 374 395 375 396 END SUBROUTINE put_field_r1 376 397 377 SUBROUTINE put_field_r2(field_name,title,field) 378 IMPLICIT NONE 398 SUBROUTINE put_field_r2(pass,field_name,title,field) 399 IMPLICIT NONE 400 INTEGER,INTENT(IN) :: pass 379 401 CHARACTER(LEN=*),INTENT(IN) :: field_name 380 402 CHARACTER(LEN=*),INTENT(IN) :: title 381 403 REAL,INTENT(IN) :: field(:,:) 382 404 383 CALL put_field_rgen( field_name,title,field,size(field,2))405 CALL put_field_rgen(pass,field_name,title,field,size(field,2)) 384 406 385 407 END SUBROUTINE put_field_r2 386 408 387 SUBROUTINE put_field_r3(field_name,title,field) 388 IMPLICIT NONE 409 SUBROUTINE put_field_r3(pass,field_name,title,field) 410 IMPLICIT NONE 411 INTEGER,INTENT(IN) :: pass 389 412 CHARACTER(LEN=*),INTENT(IN) :: field_name 390 413 CHARACTER(LEN=*),INTENT(IN) :: title 391 414 REAL,INTENT(IN) :: field(:,:,:) 392 415 393 CALL put_field_rgen( field_name,title,field,size(field,2)*size(field,3))416 CALL put_field_rgen(pass,field_name,title,field,size(field,2)*size(field,3)) 394 417 395 418 END SUBROUTINE put_field_r3 396 419 397 SUBROUTINE put_field_rgen( field_name,title,field,field_size)420 SUBROUTINE put_field_rgen(pass,field_name,title,field,field_size) 398 421 USE netcdf, ONLY: NF90_REDEF, NF90_ENDDEF, NF90_DEF_VAR, NF90_PUT_ATT, & 399 NF90_ PUT_VAR, NF90_FLOAT, NF90_DOUBLE422 NF90_INQ_VARID, NF90_PUT_VAR, NF90_FLOAT, NF90_DOUBLE 400 423 USE dimphy, ONLY: klon, klev, klevp1 401 424 USE mod_grid_phy_lmdz, ONLY: klon_glo … … 404 427 405 428 IMPLICIT NONE 429 INTEGER,INTENT(IN) :: pass 406 430 CHARACTER(LEN=*),INTENT(IN) :: field_name 407 431 CHARACTER(LEN=*),INTENT(IN) :: title … … 409 433 REAL,INTENT(IN) :: field(klon,field_size) 410 434 411 REAL :: field_glo(klon_glo,field_size)412 REAL :: field_glo_tmp(klon_glo,field_size)413 INTEGER :: ind_cell_glo_glo(klon_glo) ! cell indexes on global grid435 REAL,ALLOCATABLE :: field_glo(:,:) 436 REAL,ALLOCATABLE :: field_glo_tmp(:,:) 437 INTEGER,ALLOCATABLE :: ind_cell_glo_glo(:) ! cell indexes on global grid 414 438 415 439 INTEGER :: ierr … … 418 442 INTEGER :: i 419 443 420 ! gather indexes on global grid 421 CALL gather(ind_cell_glo,ind_cell_glo_glo) 422 ! gather field on master 423 CALL gather(field,field_glo_tmp) 424 425 IF (is_master) THEN 426 ! reorder columns 427 DO i=1,klon_glo 428 field_glo(ind_cell_glo_glo(i),:)=field_glo_tmp(i,:) 429 ENDDO 430 444 ! first pass : definition 445 IF (pass==1) THEN 446 447 IF (is_master) THEN 448 431 449 IF (field_size==1) THEN 432 450 idim=idim2 … … 440 458 ENDIF 441 459 442 ierr = NF90_REDEF (nid_restart)460 ! ierr = NF90_REDEF (nid_restart) 443 461 #ifdef NC_DOUBLE 444 462 ierr = NF90_DEF_VAR (nid_restart, field_name, NF90_DOUBLE,(/ idim /),nvarid) … … 447 465 #endif 448 466 IF (LEN_TRIM(title) > 0) ierr = NF90_PUT_ATT (nid_restart,nvarid,"title", title) 449 ierr = NF90_ENDDEF(nid_restart) 467 ! ierr = NF90_ENDDEF(nid_restart) 468 ENDIF ! of IF (is_master) 469 470 ! second pass : write 471 ELSE IF (pass==2) THEN 472 473 IF (is_master) THEN 474 ALLOCATE(ind_cell_glo_glo(klon_glo)) 475 ALLOCATE(field_glo(klon_glo,field_size)) 476 ALLOCATE(field_glo_tmp(klon_glo,field_size)) 477 ELSE 478 ALLOCATE(ind_cell_glo_glo(0)) 479 ALLOCATE(field_glo_tmp(0,0)) 480 ENDIF 481 482 ! gather indexes on global grid 483 CALL gather(ind_cell_glo,ind_cell_glo_glo) 484 ! gather field on master 485 CALL gather(field,field_glo_tmp) 486 487 IF (is_master) THEN 488 ! reorder columns 489 DO i=1,klon_glo 490 field_glo(ind_cell_glo_glo(i),:)=field_glo_tmp(i,:) 491 ENDDO 492 493 ierr = NF90_INQ_VARID(nid_restart, field_name, nvarid) 450 494 ierr = NF90_PUT_VAR(nid_restart,nvarid,RESHAPE(field_glo,(/klon_glo*field_size/))) 451 ENDIF 452 495 ENDIF ! of IF(is_master) 496 497 ENDIF ! of IF (pass=1) ELSE IF (pass==2) 498 453 499 END SUBROUTINE put_field_rgen 454 500 455 SUBROUTINE put_var_r0( var_name,title,var)501 SUBROUTINE put_var_r0(pass,var_name,title,var) 456 502 IMPLICIT NONE 503 INTEGER,INTENT(IN) :: pass 457 504 CHARACTER(LEN=*),INTENT(IN) :: var_name 458 505 CHARACTER(LEN=*),INTENT(IN) :: title … … 462 509 varin(1)=var 463 510 464 CALL put_var_rgen( var_name,title,varin,size(varin))511 CALL put_var_rgen(pass,var_name,title,varin,size(varin)) 465 512 466 513 END SUBROUTINE put_var_r0 467 514 468 515 469 SUBROUTINE put_var_r1( var_name,title,var)516 SUBROUTINE put_var_r1(pass,var_name,title,var) 470 517 IMPLICIT NONE 518 INTEGER,INTENT(IN) :: pass 471 519 CHARACTER(LEN=*),INTENT(IN) :: var_name 472 520 CHARACTER(LEN=*),INTENT(IN) :: title 473 521 REAL,INTENT(IN) :: var(:) 474 522 475 CALL put_var_rgen( var_name,title,var,size(var))523 CALL put_var_rgen(pass,var_name,title,var,size(var)) 476 524 477 525 END SUBROUTINE put_var_r1 478 526 479 SUBROUTINE put_var_r2( var_name,title,var)527 SUBROUTINE put_var_r2(pass,var_name,title,var) 480 528 IMPLICIT NONE 529 INTEGER,INTENT(IN) :: pass 481 530 CHARACTER(LEN=*),INTENT(IN) :: var_name 482 531 CHARACTER(LEN=*),INTENT(IN) :: title 483 532 REAL,INTENT(IN) :: var(:,:) 484 533 485 CALL put_var_rgen( var_name,title,var,size(var))534 CALL put_var_rgen(pass,var_name,title,var,size(var)) 486 535 487 536 END SUBROUTINE put_var_r2 488 537 489 SUBROUTINE put_var_r3( var_name,title,var)538 SUBROUTINE put_var_r3(pass,var_name,title,var) 490 539 IMPLICIT NONE 540 INTEGER,INTENT(IN) :: pass 491 541 CHARACTER(LEN=*),INTENT(IN) :: var_name 492 542 CHARACTER(LEN=*),INTENT(IN) :: title 493 543 REAL,INTENT(IN) :: var(:,:,:) 494 544 495 CALL put_var_rgen( var_name,title,var,size(var))545 CALL put_var_rgen(pass,var_name,title,var,size(var)) 496 546 497 547 END SUBROUTINE put_var_r3 498 548 499 SUBROUTINE put_var_rgen( var_name,title,var,var_size)549 SUBROUTINE put_var_rgen(pass,var_name,title,var,var_size) 500 550 USE netcdf, ONLY: NF90_REDEF, NF90_DEF_VAR, NF90_ENDDEF, NF90_PUT_VAR, & 501 NF90_ PUT_ATT, NF90_FLOAT, NF90_DOUBLE551 NF90_INQ_VARID, NF90_PUT_ATT, NF90_FLOAT, NF90_DOUBLE 502 552 USE mod_phys_lmdz_para, ONLY: is_master 503 553 IMPLICIT NONE 554 INTEGER,INTENT(IN) :: pass 504 555 CHARACTER(LEN=*),INTENT(IN) :: var_name 505 556 CHARACTER(LEN=*),INTENT(IN) :: title … … 517 568 ENDIF 518 569 519 ierr = NF90_REDEF (nid_restart) 570 ! first pass : definition 571 IF (pass==1) THEN 572 573 ! ierr = NF90_REDEF (nid_restart) 520 574 521 575 #ifdef NC_DOUBLE 522 ierr = NF90_DEF_VAR (nid_restart, var_name, NF90_DOUBLE,(/ idim1 /),nvarid)576 ierr = NF90_DEF_VAR (nid_restart, var_name, NF90_DOUBLE,(/ idim1 /),nvarid) 523 577 #else 524 ierr = NF90_DEF_VAR (nid_restart, var_name, NF90_FLOAT,(/ idim1 /),nvarid)578 ierr = NF90_DEF_VAR (nid_restart, var_name, NF90_FLOAT,(/ idim1 /),nvarid) 525 579 #endif 526 IF (LEN_TRIM(title)>0) ierr = NF90_PUT_ATT (nid_restart,nvarid,"title", title) 527 ierr = NF90_ENDDEF(nid_restart) 528 529 ierr = NF90_PUT_VAR(nid_restart,nvarid,var) 530 531 ENDIF 580 IF (LEN_TRIM(title)>0) ierr = NF90_PUT_ATT (nid_restart,nvarid,"title", title) 581 ! ierr = NF90_ENDDEF(nid_restart) 582 583 ! second pass : write 584 ELSE IF (pass==2) THEN 585 ierr = NF90_INQ_VARID(nid_restart, var_name, nvarid) 586 ierr = NF90_PUT_VAR(nid_restart,nvarid,var) 587 ENDIF 588 589 ENDIF ! of IF (is_master) 532 590 533 591 END SUBROUTINE put_var_rgen -
trunk/LMDZ.VENUS/libf/phyvenus/phyredem.F90
r3835 r3841 10 10 USE phys_state_var_mod 11 11 USE iostart, only : open_restartphy,close_restartphy, & 12 put_var,put_field12 enddef_restartphy,put_var,put_field 13 13 use geometry_mod, only: longitude_deg, latitude_deg 14 14 USE time_phylmdz_mod, only: day_end, annee_ref, itau_phy, raz_date … … 33 33 integer :: isoil 34 34 CHARACTER(len=2) :: str2 35 35 integer :: pass 36 36 37 37 ! open file … … 60 60 tab_cntrl(15) = itau_phy 61 61 62 CALL put_var("controle","Parametres de controle",tab_cntrl) 62 ! write data to file 63 DO pass=1,2 ! pass=1 netcdf definition ; pass=2 netcdf write 64 65 CALL put_var(pass,"controle","Parametres de controle",tab_cntrl) 63 66 64 67 ! coordinates 65 68 66 CALL put_field( "longitude", &69 CALL put_field(pass,"longitude", & 67 70 "Longitudes de la grille physique",longitude_deg) 68 71 69 CALL put_field( "latitude", &72 CALL put_field(pass,"latitude", & 70 73 "Latitudes de la grille physique",latitude_deg) 71 74 72 75 ! variables 73 76 74 CALL put_field( "TS","Temperature de surface",ftsol)77 CALL put_field(pass,"TS","Temperature de surface",ftsol) 75 78 76 79 DO isoil=1, nsoilmx 77 80 IF (isoil.LE.99) THEN 78 81 WRITE(str2,'(i2.2)') isoil 79 CALL put_field( "Tsoil"//str2, &82 CALL put_field(pass,"Tsoil"//str2, & 80 83 "Temperature du sol No."//str2,ftsoil(:,isoil)) 81 84 ELSE 82 PRINT*, "T rop de couches"85 PRINT*, "Too many soil layers" 83 86 CALL abort 84 87 ENDIF 85 88 ENDDO 86 89 87 CALL put_field( "ALBE","albedo de surface",falbe)88 CALL put_field( "solsw","Rayonnement solaire a la surface",solsw)89 CALL put_field( "sollw","Rayonnement IR a la surface",sollw)90 CALL put_field( "fder","Derive de flux",fder)91 CALL put_field( "dlw","Derivee flux IR",dlw)92 CALL put_field( "sollwdown","Flux IR vers le bas a la surface",sollwdown)93 CALL put_field( "RADS","Rayonnement net a la surface",radsol)94 CALL put_field( "ZMEA","zmea Orographie sous-maille",zmea)95 CALL put_field( "ZSTD","zstd Orographie sous-maille",zstd)96 CALL put_field( "ZSIG","zsig Orographie sous-maille",zsig)97 CALL put_field( "ZGAM","zgam Orographie sous-maille",zgam)98 CALL put_field( "ZTHE","zthe Orographie sous-maille",zthe)99 CALL put_field( "ZPIC","zpic Orographie sous-maille",zpic)100 CALL put_field( "ZVAL","zval Orographie sous-maille",zval)101 CALL put_field( "Q2","Turbulent Kinetic Energy",q2)90 CALL put_field(pass,"ALBE","albedo de surface",falbe) 91 CALL put_field(pass,"solsw","Rayonnement solaire a la surface",solsw) 92 CALL put_field(pass,"sollw","Rayonnement IR a la surface",sollw) 93 CALL put_field(pass,"fder","Derive de flux",fder) 94 CALL put_field(pass,"dlw","Derivee flux IR",dlw) 95 CALL put_field(pass,"sollwdown","Flux IR vers le bas a la surface",sollwdown) 96 CALL put_field(pass,"RADS","Rayonnement net a la surface",radsol) 97 CALL put_field(pass,"ZMEA","zmea Orographie sous-maille",zmea) 98 CALL put_field(pass,"ZSTD","zstd Orographie sous-maille",zstd) 99 CALL put_field(pass,"ZSIG","zsig Orographie sous-maille",zsig) 100 CALL put_field(pass,"ZGAM","zgam Orographie sous-maille",zgam) 101 CALL put_field(pass,"ZTHE","zthe Orographie sous-maille",zthe) 102 CALL put_field(pass,"ZPIC","zpic Orographie sous-maille",zpic) 103 CALL put_field(pass,"ZVAL","zval Orographie sous-maille",zval) 104 CALL put_field(pass,"Q2","Turbulent Kinetic Energy",q2) 102 105 103 CALL put_field( "TANCIEN","T Previous iteration",t_ancien)106 CALL put_field(pass,"TANCIEN","T Previous iteration",t_ancien) 104 107 105 108 ! Non-orographic gavity waves 106 109 if (ok_gw_nonoro) then 107 call put_field( "du_nonoro_gwd","Zonal wind tendency due to GW",du_nonoro_gwd)108 call put_field( "dv_nonoro_gwd","Meridional wind tendency due to GW",dv_nonoro_gwd)109 call put_field( "east_gwstress","Eastward stress profile due to GW",east_gwstress)110 call put_field( "west_gwstress","Westward stress profile due to GW",west_gwstress)110 call put_field(pass,"du_nonoro_gwd","Zonal wind tendency due to GW",du_nonoro_gwd) 111 call put_field(pass,"dv_nonoro_gwd","Meridional wind tendency due to GW",dv_nonoro_gwd) 112 call put_field(pass,"east_gwstress","Eastward stress profile due to GW",east_gwstress) 113 call put_field(pass,"west_gwstress","Westward stress profile due to GW",west_gwstress) 111 114 endif 112 115 113 116 if (ok_aoa) then 114 call put_field( "age","Age of air",age)117 call put_field(pass,"age","Age of air",age) 115 118 endif 116 119 117 ! close file 120 ! end definition mode or close file 121 IF (pass==1) CALL enddef_restartphy 122 IF (pass==2) CALL close_restartphy 123 ENDDO ! DO pass=1,2 ! pass=1 netcdf definition ; pass=2 netcdf write 118 124 119 CALL close_restartphy120 125 !$OMP BARRIER 121 126 -
trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F
r3835 r3841 62 62 ! USE histcom ! not needed; histcom is included in ioipsl 63 63 use dimphy 64 use conf_phys_mod, only: conf_phys 64 65 USE geometry_mod,only: longitude, latitude, ! in radians 65 66 & longitude_deg,latitude_deg, ! in degrees … … 121 122 #include "hedin.h" 122 123 c====================================================================== 123 LOGICAL ok_journe ! sortir le fichier journalier124 save ok_journe 124 LOGICAL, SAVE :: ok_journe ! sortir le fichier journalier 125 !$OMP THREADPRIVATE(ok_journe) 125 126 c PARAMETER (ok_journe=.true.) 126 127 c 127 LOGICAL ok_mensuel ! sortir le fichier mensuel 128 save ok_mensuel 128 LOGICAL, SAVE :: ok_mensuel ! sortir le fichier mensuel 129 !$OMP THREADPRIVATE(ok_mensuel) 130 129 131 c PARAMETER (ok_mensuel=.true.) 130 132 c 131 LOGICAL ok_instan ! sortir le fichier instantane132 save ok_instan 133 LOGICAL, SAVE :: ok_instan ! sortir le fichier instantane 134 !$OMP THREADPRIVATE(ok_instan) 133 135 c PARAMETER (ok_instan=.true.) 134 136 c … … 169 171 REAL,INTENT(OUT) :: d_ps(klon) 170 172 171 logical ok_hf 172 real ecrit_hf 173 integer nid_hf 174 save ok_hf, ecrit_hf, nid_hf 173 logical, save :: ok_hf 174 !$OMP THREADPRIVATE(ok_hf) 175 real, save :: ecrit_hf 176 !$OMP THREADPRIVATE(ecrit_hf) 177 integer, save :: nid_hf 178 !$OMP THREADPRIVATE(nid_hf) 175 179 176 180 #ifdef histhf … … 183 187 184 188 integer,save :: itap ! physics counter 189 !$OMP THREADPRIVATE(itap) 185 190 REAL delp(klon,klev) ! epaisseur d'une couche 186 191 REAL omega(klon,klev) ! vitesse verticale en Pa/s (+ downward) … … 226 231 cAA 227 232 REAL,save,allocatable :: source(:,:) 233 !$OMP THREADPRIVATE(source) 228 234 REAL ycoefh(klon,klev) ! coef d'echange pour phytrac 229 235 REAL :: kzz_p(klev) ! coef d'echange pour phytrac pour le 1D … … 255 261 EXTERNAL zenang 256 262 EXTERNAL diagetpq 257 EXTERNAL conf_phys258 263 EXTERNAL diagphy 259 264 EXTERNAL mucorr … … 351 356 c Variables liees a l'ecriture de la bande histoire physique 352 357 c 353 INTEGER ecrit_mth 354 SAVE ecrit_mth ! frequence d'ecriture (fichier mensuel) 355 c 356 INTEGER ecrit_day 357 SAVE ecrit_day ! frequence d'ecriture (fichier journalier) 358 c 359 INTEGER ecrit_ins 360 SAVE ecrit_ins ! frequence d'ecriture (fichier instantane) 358 INTEGER, SAVE :: ecrit_mth ! frequence d'ecriture (fichier mensuel) 359 !$OMP THREADPRIVATE(ecrit_mth) 360 INTEGER, SAVE :: ecrit_day ! frequence d'ecriture (fichier journalier) 361 !$OMP THREADPRIVATE(ecrit_day) 362 c 363 INTEGER ,SAVE :: ecrit_ins ! frequence d'ecriture (fichier instantane) 364 !$OMP THREADPRIVATE(ecrit_ins) 361 365 c 362 366 integer itau_w ! pas de temps ecriture = itap + itau_phy … … 373 377 REAL :: col_dens_tr(klon,nqmax) 374 378 REAL,allocatable,save :: prod_tr(:,:,:) 379 !$OMP THREADPRIVATE(prod_tr) 375 380 REAL,allocatable,save :: loss_tr(:,:,:) 381 !$OMP THREADPRIVATE(loss_tr) 376 382 377 383 c pour ioipsl 378 INTEGER nid_day, nid_mth, nid_ins379 SAVE nid_day, nid_mth, nid_ins 384 INTEGER, SAVE :: nid_day, nid_mth, nid_ins 385 !$OMP THREADPRIVATE(nid_day,nid_mth,nid_ins) 380 386 INTEGER nhori, nvert, idayref 381 387 REAL zsto, zout, zsto1, zsto2, zero 382 388 parameter (zero=0.0e0) 383 real zjulian384 save zjulian 389 real, save :: zjulian 390 !$OMP THREADPRIVATE(zjulian) 385 391 386 392 CHARACTER*2 str2 … … 395 401 C Variables liees au bilan d'energie et d'enthalpi 396 402 REAL ztsol(klon) 397 REAL 398 $ , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot 399 SAVE h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot400 $ , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot 403 REAL, SAVE :: h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot 404 !$OMP THREADPRIVATE(h_vcol_tot,h_dair_tot,h_qw_tot,h_ql_tot) 405 REAL, SAVE :: h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot 406 !$OMP THREADPRIVATE(h_qs_tot,qw_tot,ql_tot,qs_tot,ec_tot) 401 407 REAL d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec 402 REAL d_h_vcol_phy 408 REAL, SAVE :: d_h_vcol_phy 409 !$OMP THREADPRIVATE(d_h_vcol_phy) 403 410 REAL fs_bound, fq_bound 404 SAVE d_h_vcol_phy405 411 REAL zero_v(klon),zero_v2(klon,klev) 406 412 CHARACTER*15 ztit 407 INTEGER 408 SAVE ip_ebil 413 INTEGER, SAVE :: ip_ebil ! PRINT level for energy conserv. diag. 414 !$OMP THREADPRIVATE(ip_ebil) 409 415 DATA ip_ebil/2/ 410 INTEGER 411 SAVE if_ebil 416 INTEGER, SAVE :: if_ebil ! level for energy conserv. dignostics 417 !$OMP THREADPRIVATE(if_ebil) 412 418 c+jld ec_conser 413 419 REAL d_t_ec(klon,klev) ! tendance du a la conversion Ec -> E thermique -
trunk/LMDZ.VENUS/libf/phyvenus/tabcontrol.h
r815 r3841 15 15 COMMON/ctltab_r/dtime 16 16 COMMON/ctltab/tabcntr0 17 18 !$OMP THREADPRIVATE(/ctltab_i/,/ctltab_r/,/ctltab/) -
trunk/LMDZ.VENUS/libf/phyvenus/turb_mod.F90
r2534 r3841 3 3 !! variables 4 4 REAL,SAVE,ALLOCATABLE :: q2(:,:) ! Turbulent Kinetic Energy 5 !$OMP THREADPRIVATE(q2) 5 6 REAL,SAVE,ALLOCATABLE :: sens(:) 7 !$OMP THREADPRIVATE(sens) 6 8 REAL,allocatable,SAVE :: l0(:) ! Characteristic mixing length 9 !$OMP THREADPRIVATE(l0) 7 10 REAL,SAVE,ALLOCATABLE :: yustar(:) 11 !$OMP THREADPRIVATE(yustar) 8 12 REAL,SAVE,ALLOCATABLE :: wstar(:) 13 !$OMP THREADPRIVATE(wstar) 9 14 REAL,SAVE,ALLOCATABLE :: tstar(:) 15 !$OMP THREADPRIVATE(tstar) 10 16 REAL,SAVE,ALLOCATABLE :: hfmax_th(:) 17 !$OMP THREADPRIVATE(hfmax_th) 11 18 REAL,SAVE,ALLOCATABLE :: zmax_th(:) 19 !$OMP THREADPRIVATE(zmax_th) 12 20 ! REAL,SAVE,ALLOCATABLE :: sensibFlux(:) 13 21 LOGICAL :: turb_resolved = .false. 14 22 ! this is a flag to say 'turbulence is resolved' 15 23 ! mostly for LES use. default is FALSE (for GCM and mesoscale) 24 !$OMP THREADPRIVATE(turb_resolved) 16 25 17 26 contains
Note: See TracChangeset
for help on using the changeset viewer.