Changeset 1864 for LMDZ5/branches/testing
- Timestamp:
- Sep 11, 2013, 11:45:01 AM (11 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 14 deleted
- 229 edited
- 20 copied
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1797-1799,1801-1811,1813-1834,1836,1838-1840,1842-1860
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/arch/arch-X64_ADA.fcm
r1795 r1864 11 11 %MPI_FFLAGS 12 12 %OMP_FFLAGS -openmp 13 %BASE_LD - shared-intel -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -L/smplocal/pub/FFTW/3.3.3_dyn/lib -lfftw3-Wl,-rpath=/smplocal/pub/NetCDF/4.1.3/lib:/smplocal/pub/HDF5/1.8.9/seq/lib:/smplocal/pub/FFTW/3.3.3_dyn/lib13 %BASE_LD -L/smplocal/pub/FFTW/3.3.3_dyn/lib -lfftw3 -shared-intel -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -Wl,-rpath=/smplocal/pub/NetCDF/4.1.3/lib:/smplocal/pub/HDF5/1.8.9/seq/lib:/smplocal/pub/FFTW/3.3.3_dyn/lib 14 14 %MPI_LD 15 15 %OMP_LD -openmp -
LMDZ5/branches/testing/arch/arch-gfortran.fcm
r1492 r1864 4 4 %MAKE make 5 5 %FPP_FLAGS -P -traditional 6 %FPP_DEF PLOUF7 %BASE_FFLAGS -c 6 %FPP_DEF NC_DOUBLE 7 %BASE_FFLAGS -c -fdefault-real-8 8 8 %PROD_FFLAGS -O3 9 9 %DEV_FFLAGS -O -
LMDZ5/branches/testing/arch/arch-gfortran.path
r1492 r1864 1 NETCDF_LIBDIR= ...2 NETCDF_INCDIR= ...3 IOIPSL_INCDIR= ...4 IOIPSL_LIBDIR= ...5 ORCH_INCDIR= ...6 ORCH_LIBDIR= ...1 NETCDF_LIBDIR="-L/usr/local/lib -lnetcdf" 2 NETCDF_INCDIR=-I/usr/local/include 3 IOIPSL_INCDIR=$LMDGCM/../../lib 4 IOIPSL_LIBDIR=$LMDGCM/../../lib 5 ORCH_INCDIR=$LMDGCM/../../lib 6 ORCH_LIBDIR=$LMDGCM/../../lib -
LMDZ5/branches/testing/bld.cfg
r1664 r1864 30 30 src::ext_src %EXT_SRC 31 31 32 bld::lib::dyn %DYN 33 bld::lib::phys %PHYS 34 bld::lib::grid grid 35 bld::lib::filtrez filtrez 36 bld::lib::bibio bibio 37 bld::lib::cosp cosp 38 bld::lib: ext_src ext_src 39 32 bld::lib lmdz 40 33 41 34 bld::outfile_ext::exe %SUFF_NAME.e 42 bld::target lib %{DYN}.a lib%{PHYS}.a libgrid.a libfiltrez.a libbibio.a libcosp.a libext_src.a35 bld::target liblmdz.a 43 36 bld::target %EXEC%SUFF_NAME.e 44 bld::exe_dep %{DYN} %{PHYS} grid filtrez bibio cosp ext_src37 bld::exe_dep 45 38 46 39 … … 64 57 65 58 59 # Example of how to set specific compiling options for a specific file 60 # -> this can be including in the arch.opt file 66 61 #bld::tool::fflags::phys::readaerosol %BASE_FFLAGS %PROD_FFLAGS %INCDIR -C hopt -pi auto 67 #bld::tool::fflags::phys::aeropt_2bands %BASE_FFLAGS %PROD_FFLAGS %INCDIR68 #bld::tool::fflags::phys::radiation_AR4 %BASE_FFLAGS %PROD_FFLAGS1 %INCDIR -C hopt -Wf,-O,extendreorder69 #bld::tool::fflags::phys::radiation_AR4_param %BASE_FFLAGS %PROD_FFLAGS1 %INCDIR -C hopt -f370 #bld::tool::fflags::phys::fisrtilp %BASE_FFLAGS %PROD_FFLAGS %INCDIR -C hopt71 #bld::tool::fflags::phys::cv30_routines %BASE_FFLAGS %PROD_FFLAGS %INCDIR -Wf,-O,extendreorder72 #bld::tool::fflags::phys::cvltr %BASE_FFLAGS %PROD_FFLAGS %INCDIR -C hopt73 #bld::tool::fflags::phys::clouds_gno %BASE_FFLAGS %PROD_FFLAGS %INCDIR -C hopt74 #bld::tool::fflags::dyn::vlsplt_p %BASE_FFLAGS %PROD_FFLAGS %INCDIR -C hopt75 #bld::tool::fflags::dyn::groupeun_p %BASE_FFLAGS %PROD_FFLAGS %INCDIR -C hopt76 62 77 63 … … 95 81 bld::excl_dep use::mod_prism_get_proto 96 82 bld::excl_dep use::mod_prism_put_proto 97 bld::excl_dep use::mkl_dfti98 83 99 84 # Don't generate interface files -
LMDZ5/branches/testing/build_gcm
r1752 r1864 29 29 fi 30 30 31 job=1 31 32 dirname="" #path to where the fcm command will be found 32 33 if (( $# >= 1 )) ; then … … 39 40 # add a trailing "/" to $dirname 40 41 dirname=${dirname}"/" 42 shift; 41 43 fi 42 44 43 45 # run "fcm build" command 44 ${dirname}fcm build 46 ${dirname}fcm build $* 45 47 46 48 # cleanup -
LMDZ5/branches/testing/create_make_gcm
r1750 r1864 42 42 echo 'LIBF = $(GCM)/libf' 43 43 if [ "$CRAY" = '0' ] ; then 44 # echo 'LIBO = $(GCM)/libo/$(MACHINE)'45 44 echo 'LIBO = $(LIBOGCM)/$(MACHINE)' 46 45 else 47 46 echo 'LIBO = $(GCM)/libo' 48 47 fi 49 #echo 'LOCAL_DIR=$(GCM)'50 #echo $localdir51 48 echo "LOCAL_DIR=`echo $localdir`" 52 49 echo 'BIBIO = $(LIBF)/bibio' … … 180 177 strj=`echo $stri | tr [A-Z] [a-z]` 181 178 str2="" 182 for dirinc in filtrez bibio grid dyn3d $diri $diri/*/ ; do179 for dirinc in filtrez bibio grid dyn3d phydev $diri $diri/*/ ; do 183 180 # Recherche dans l'ordre hierarchique inverse car seule la derniere 184 181 # ligne est conservee 182 if [ $dirinc = phydev ] ; then 183 dirstr='$(PHYS)' 184 libstr='phy$(PHYS)' 185 else 186 dirstr=$dirinc 187 libstr=$dirinc 188 fi 185 189 if [ -f $dirinc/$stri ] ; then 186 str2='$(LIBF)/'$dir inc/$stri190 str2='$(LIBF)/'$dirstr/$stri 187 191 elif [ -f $dirinc/$strj ] ; then 188 str2='$(LIBF)/'$dir inc/$stri192 str2='$(LIBF)/'$dirstr/$stri 189 193 elif [ -f $dirinc/$strj.F90 ] || [ -f $dirinc/$strj.F ] ; then 190 strlib=`echo $ dirinc| awk -F/ ' { print $1 } '`194 strlib=`echo $libstr | awk -F/ ' { print $1 } '` 191 195 str2='$(LIBO)/lib'$strlib'.a('$strj'.o)' 192 196 fi -
LMDZ5/branches/testing/libf/dyn3d/abort_gcm.F
r1425 r1864 12 12 USE ioipsl_getincom 13 13 #endif 14 15 #ifdef CPP_XIOS 16 ! ug Pour les sorties XIOS 17 USE wxios 18 #endif 19 14 20 #include "iniprint.h" 15 21 … … 27 33 28 34 write(lunout,*) 'in abort_gcm' 35 36 #ifdef CPP_XIOS 37 !Fermeture propre de XIOS 38 CALL wxios_close() 39 #endif 40 29 41 #ifdef CPP_IOIPSL 30 42 call histclo -
LMDZ5/branches/testing/libf/dyn3d/advtrac.F90
r1549 r1864 203 203 if (countcfl==day_step) then 204 204 do l=1,llm 205 write(lunout,*) 'L, CFL max '&206 ,l,maxval(cflx(:,l)),maxval(cfly(:,l)),maxval(cflz(:,l))205 write(lunout,*) 'L, CFL[xyz]max:', l, cflxmax(l), cflymax(l), & 206 cflzmax(l) 207 207 enddo 208 208 countcfl=0 -
LMDZ5/branches/testing/libf/dyn3d/gcm.F
r1795 r1864 11 11 ! if not using IOIPSL, we still need to use (a local version of) getin 12 12 USE ioipsl_getincom 13 #endif 14 15 16 #ifdef CPP_XIOS 17 ! ug Pour les sorties XIOS 18 USE wxios 13 19 #endif 14 20 … … 179 185 ! CALL defrun( 99, .TRUE. , clesphy0 ) 180 186 !#endif 187 188 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 189 ! Initialisation de XIOS 190 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 191 192 #ifdef CPP_XIOS 193 CALL wxios_init("LMDZ") 194 #endif 195 181 196 182 197 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -
LMDZ5/branches/testing/libf/dyn3dmem/abort_gcm.F
r1795 r1864 12 12 USE ioipsl_getincom 13 13 #endif 14 USE parallel 14 USE parallel_lmdz 15 15 #include "iniprint.h" 16 16 -
LMDZ5/branches/testing/libf/dyn3dmem/addfi_loc.F
r1707 r1864 5 5 S pucov, pvcov, pteta, pq , pps , 6 6 S pdufi, pdvfi, pdhfi,pdqfi, pdpfi ) 7 USE parallel 7 USE parallel_lmdz 8 8 USE infotrac, ONLY : nqtot 9 9 USE control_mod, ONLY : planet_type -
LMDZ5/branches/testing/libf/dyn3dmem/advect_new_loc.F
r1669 r1864 4 4 SUBROUTINE advect_new_loc(ucov,vcov,teta,w,massebx,masseby, 5 5 & du,dv,dteta) 6 USE parallel 6 USE parallel_lmdz 7 7 USE write_field_loc 8 8 USE advect_new_mod -
LMDZ5/branches/testing/libf/dyn3dmem/advect_new_mod.F90
r1669 r1864 15 15 SUBROUTINE advect_new_allocate 16 16 USE bands 17 USE allocate_field 18 USE parallel 19 USE dimensions 17 USE allocate_field_mod 18 USE parallel_lmdz 19 USE dimensions_mod 20 20 IMPLICIT NONE 21 21 TYPE(distrib),POINTER :: d … … 36 36 37 37 SUBROUTINE advect_new_switch_caldyn(dist) 38 USE allocate_field 38 USE allocate_field_mod 39 39 USE bands 40 USE parallel 40 USE parallel_lmdz 41 41 IMPLICIT NONE 42 42 TYPE(distrib),INTENT(IN) :: dist -
LMDZ5/branches/testing/libf/dyn3dmem/advtrac_loc.F
r1707 r1864 17 17 c M.A Filiberti (04/2002) 18 18 c 19 USE parallel 19 USE parallel_lmdz 20 20 USE Write_Field_loc 21 21 USE Write_Field … … 79 79 DATA dum/.true./ 80 80 integer ijb,ije,ijbu,ijbv,ijeu,ijev,j 81 type(Request) :: testRequest 81 type(Request),SAVE :: testRequest 82 !$OMP THREADPRIVATE(testRequest) 82 83 83 84 c test sur l'eventuelle creation de valeurs negatives de la masse -
LMDZ5/branches/testing/libf/dyn3dmem/advtrac_mod.F90
r1669 r1864 7 7 SUBROUTINE advtrac_allocate 8 8 USE bands 9 USE allocate_field 10 USE parallel 9 USE allocate_field_mod 10 USE parallel_lmdz 11 11 USE infotrac 12 12 USE vlspltgen_mod … … 22 22 23 23 SUBROUTINE advtrac_switch_vanleer(dist) 24 USE allocate_field 24 USE allocate_field_mod 25 25 USE bands 26 USE parallel 26 USE parallel_lmdz 27 27 USE vlspltgen_mod 28 28 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/bands.F90
r1707 r1864 3 3 ! 4 4 module Bands 5 USE parallel 5 USE parallel_lmdz 6 6 integer, parameter :: bands_caldyn=1 7 7 integer, parameter :: bands_vanleer=2 … … 27 27 28 28 subroutine AllocateBands 29 use parallel29 USE parallel_lmdz 30 30 implicit none 31 31 … … 41 41 42 42 subroutine Read_distrib 43 use parallel43 USE parallel_lmdz 44 44 implicit none 45 45 … … 104 104 105 105 SUBROUTINE Set_Bands 106 USE parallel 106 USE parallel_lmdz 107 107 #ifdef CPP_PHYS 108 108 ! Ehouarn: what follows is only related to // physics … … 168 168 subroutine AdjustBands_caldyn(new_dist) 169 169 use times 170 use parallel170 USE parallel_lmdz 171 171 implicit none 172 172 TYPE(distrib),INTENT(INOUT) :: new_dist … … 235 235 subroutine AdjustBands_vanleer(new_dist) 236 236 use times 237 use parallel237 USE parallel_lmdz 238 238 implicit none 239 239 TYPE(distrib),INTENT(INOUT) :: new_dist … … 304 304 subroutine AdjustBands_dissip(new_dist) 305 305 use times 306 use parallel306 USE parallel_lmdz 307 307 implicit none 308 308 TYPE(distrib),INTENT(INOUT) :: new_dist … … 377 377 USE mod_phys_lmdz_para, only : klon_mpi_para_nb 378 378 #endif 379 USE parallel 379 USE parallel_lmdz 380 380 implicit none 381 381 … … 428 428 429 429 subroutine WriteBands 430 USE parallel 430 USE parallel_lmdz 431 431 implicit none 432 432 include "dimensions.h" -
LMDZ5/branches/testing/libf/dyn3dmem/bernoui_loc.F
r1669 r1864 1 1 SUBROUTINE bernoui_loc (ngrid,nlay,pphi,pecin,pbern) 2 USE parallel 2 USE parallel_lmdz 3 3 USE mod_filtreg_p 4 4 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/bilan_dyn_loc.F
r1707 r1864 13 13 USE IOIPSL 14 14 #endif 15 USE parallel 15 USE parallel_lmdz 16 16 USE mod_hallo 17 17 use misc_mod … … 157 157 real,SAVE,ALLOCATABLE :: rlong(:),rlatg(:) 158 158 integer :: jjb,jje,jjn,ijb,ije 159 type(Request) :: Req 159 type(Request),SAVE :: Req 160 !$OMP THREADPRIVATE(Req) 160 161 161 162 ! definition du domaine d'ecriture pour le rebuild -
LMDZ5/branches/testing/libf/dyn3dmem/caladvtrac_loc.F
r1707 r1864 7 7 * p ,masse, dq , teta, 8 8 * flxw, pk, iapptrac) 9 USE parallel 9 USE parallel_lmdz 10 10 USE infotrac, ONLY : nqtot 11 11 USE control_mod, ONLY : iapp_tracvl,planet_type … … 53 53 INTEGER :: ijb,ije,ijbu,ijbv,ijeu,ijev,j 54 54 INTEGER :: ij,l 55 TYPE(Request) :: Request_vanleer56 55 TYPE(Request),SAVE :: Request_vanleer 56 !$OMP THREADPRIVATE(Request_vanleer) 57 57 58 58 … … 122 122 c 1. calcul de w 123 123 c 2. groupement des mailles pres du pole. 124 pbarvg(:,:)=-1 125 pbarvg_adv(:,:)=-2 124 126 125 CALL groupe_loc( massem, pbaruc,pbarvc, pbarug,pbarvg,wg ) 127 flxw(ijb:ije,1:llm)=wg(ijb:ije,1:llm)/REAL(iapp_tracvl) 126 127 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 128 DO l=1,llm 129 flxw(ijb:ije,l)=wg(ijb:ije,l)/REAL(iapp_tracvl) 130 ENDDO 131 c$OMP ENDDO NOWAIT 128 132 129 133 #ifdef DEBUG_IO -
LMDZ5/branches/testing/libf/dyn3dmem/caladvtrac_mod.F90
r1669 r1864 21 21 SUBROUTINE caladvtrac_allocate 22 22 USE bands 23 USE allocate_field 24 USE parallel 23 USE allocate_field_mod 24 USE parallel_lmdz 25 25 USE infotrac 26 26 USE advtrac_mod, ONLY : advtrac_allocate … … 55 55 56 56 SUBROUTINE caladvtrac_switch_caldyn(dist) 57 USE allocate_field 57 USE allocate_field_mod 58 58 USE bands 59 USE parallel 59 USE parallel_lmdz 60 60 USE groupe_mod 61 61 IMPLICIT NONE … … 74 74 75 75 SUBROUTINE caladvtrac_switch_vanleer(dist) 76 USE allocate_field 76 USE allocate_field_mod 77 77 USE bands 78 USE parallel 78 USE parallel_lmdz 79 79 USE advtrac_mod, ONLY : advtrac_switch_vanleer 80 80 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/caldyn_loc.F
r1669 r1864 10 10 $ (itau,ucov,vcov,teta,ps,masse,pk,pkf,phis , 11 11 $ phi,conser,du,dv,dteta,dp,w,pbaru,pbarv,time ) 12 USE parallel 12 USE parallel_lmdz 13 13 USE Write_Field_loc 14 14 USE caldyn_mod -
LMDZ5/branches/testing/libf/dyn3dmem/caldyn_mod.F90
r1669 r1864 20 20 SUBROUTINE caldyn_allocate 21 21 USE bands 22 USE allocate_field 23 USE parallel 24 USE dimensions 22 USE allocate_field_mod 23 USE parallel_lmdz 24 USE dimensions_mod 25 25 USE advect_new_mod,ONLY : advect_new_allocate 26 26 IMPLICIT NONE … … 47 47 48 48 SUBROUTINE caldyn_switch_caldyn(dist) 49 USE allocate_field 49 USE allocate_field_mod 50 50 USE bands 51 USE parallel 51 USE parallel_lmdz 52 52 USE advect_new_mod,ONLY : advect_new_switch_caldyn 53 53 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/calfis_loc.F
r1795 r1864 37 37 USE IOPHY 38 38 #endif 39 USE parallel , ONLY : omp_chunk,using_mpi,jjb_u,jje_u,jjb_v,jje_v39 USE parallel_lmdz,ONLY:omp_chunk,using_mpi,jjb_u,jje_u,jjb_v,jje_v 40 40 USE Write_Field 41 41 Use Write_field_p -
LMDZ5/branches/testing/libf/dyn3dmem/call_calfis_mod.F90
r1795 r1864 36 36 SUBROUTINE call_calfis_allocate 37 37 USE bands 38 USE allocate_field 39 USE parallel 40 USE dimensions 38 USE allocate_field_mod 39 USE parallel_lmdz 40 USE dimensions_mod 41 41 USE infotrac 42 42 IMPLICIT NONE … … 74 74 SUBROUTINE call_calfis(itau,lafin,clesphy0,ucov_dyn,vcov_dyn,teta_dyn,masse_dyn,ps_dyn, & 75 75 phis_dyn,q_dyn,flxw_dyn) 76 USE dimensions 77 USE parallel 76 USE dimensions_mod 77 USE parallel_lmdz 78 78 USE times 79 79 USE mod_hallo … … 111 111 REAL :: jD_cur, jH_cur 112 112 CHARACTER(LEN=15) :: ztit 113 TYPE(Request) :: Request_physic 113 TYPE(Request),SAVE :: Request_physic 114 !$OMP THREADPRIVATE(Request_physic ) 114 115 INTEGER :: ijb,ije,l,j 115 116 … … 378 379 IF (ip_ebil_dyn.ge.1 ) THEN 379 380 ztit='bil phys' 380 CALL diagedyn(ztit,2,1,1,dtphys,ucov, vcov , ps, p ,pk , teta , q(:,:,1), q(:,:,2)) 381 ! CALL diagedyn(ztit,2,1,1,dtphys,ucov, vcov , ps, p ,pk , teta , q(:,:,1), q(:,:,2)) 382 write(lunout,*)"call_calfis: diagedyn disabled in dyn3dmem !!" 381 383 ENDIF 382 384 -
LMDZ5/branches/testing/libf/dyn3dmem/call_dissip_mod.F90
r1707 r1864 22 22 SUBROUTINE call_dissip_allocate 23 23 USE bands 24 USE allocate_field 25 USE parallel 26 USE dimensions 24 USE allocate_field_mod 25 USE parallel_lmdz 26 USE dimensions_mod 27 27 USE dissip_mod, ONLY : dissip_allocate 28 28 IMPLICIT NONE … … 50 50 51 51 SUBROUTINE call_dissip_switch_dissip(dist) 52 USE allocate_field 52 USE allocate_field_mod 53 53 USE bands 54 USE parallel 54 USE parallel_lmdz 55 55 USE dissip_mod, ONLY : dissip_switch_dissip 56 56 IMPLICIT NONE … … 78 78 79 79 SUBROUTINE call_dissip(ucov_dyn,vcov_dyn,teta_dyn,p_dyn,pk_dyn,ps_dyn) 80 USE dimensions 81 USE parallel 80 USE dimensions_mod 81 USE parallel_lmdz 82 82 USE times 83 83 USE mod_hallo … … 98 98 REAL SSUM 99 99 LOGICAL,PARAMETER :: dissip_conservative=.TRUE. 100 TYPE(Request) :: Request_dissip101 100 TYPE(Request),SAVE :: Request_dissip 101 !$OMP THREADPRIVATE(Request_dissip ) 102 102 INTEGER :: ij,l,ijb,ije 103 103 -
LMDZ5/branches/testing/libf/dyn3dmem/ce0l.F90
r1795 r1864 22 22 USE mod_const_mpi 23 23 USE infotrac 24 USE parallel , ONLY: finalize_parallel24 USE parallel_lmdz, ONLY: finalize_parallel 25 25 USE indice_sol_mod 26 26 -
LMDZ5/branches/testing/libf/dyn3dmem/conf_gcm.F
r1795 r1864 17 17 use mod_filtre_fft_loc, ONLY : use_filtre_fft_loc=>use_filtre_fft 18 18 use mod_hallo, ONLY : use_mpi_alloc 19 use parallel, ONLY : omp_chunk20 19 USE infotrac, ONLY : type_trac 21 20 use assert_m, only: assert … … 908 907 use_mpi_alloc=.FALSE. 909 908 CALL getin('use_mpi_alloc',use_mpi_alloc) 910 911 !Config Key = omp_chunk912 !Config Desc = taille des blocs openmp913 !Config Def = 1914 !Config Help = defini la taille des packets d'it�ration openmp915 !Config distribu�e � chaque t�che lors de l'entr�e dans une916 !Config boucle parall�lis�e917 918 omp_chunk=1919 CALL getin('omp_chunk',omp_chunk)920 909 921 910 !Config key = ok_strato … … 1006 995 write(lunout,*)' use_filtre_fft = ', use_filtre_fft 1007 996 write(lunout,*)' use_mpi_alloc = ', use_mpi_alloc 1008 write(lunout,*)' omp_chunk = ', omp_chunk1009 997 write(lunout,*)' ok_strato = ', ok_strato 1010 998 write(lunout,*)' ok_gradsfile = ', ok_gradsfile -
LMDZ5/branches/testing/libf/dyn3dmem/convflu_loc.F
r1669 r1864 15 15 c nbniv est le nombre de niveaux vert. de xflu et de yflu . 16 16 c 17 USE parallel 17 USE parallel_lmdz 18 18 IMPLICIT NONE 19 19 c -
LMDZ5/branches/testing/libf/dyn3dmem/convmas1_loc.F
r1669 r1864 1 1 SUBROUTINE convmas1_loc (pbaru, pbarv, convm ) 2 2 c 3 USE parallel 3 USE parallel_lmdz 4 4 USE mod_filtreg_p 5 5 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/convmas2_loc.F
r1669 r1864 1 1 SUBROUTINE convmas2_loc ( convm ) 2 2 c 3 USE parallel 3 USE parallel_lmdz 4 4 IMPLICIT NONE 5 5 -
LMDZ5/branches/testing/libf/dyn3dmem/convmas_loc.F
r1669 r1864 1 1 SUBROUTINE convmas_loc (pbaru, pbarv, convm ) 2 2 c 3 USE parallel 3 USE parallel_lmdz 4 4 USE mod_filtreg_p 5 5 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/covcont_loc.F
r1669 r1864 1 1 SUBROUTINE covcont_loc (klevel,ucov, vcov, ucont, vcont ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 -
LMDZ5/branches/testing/libf/dyn3dmem/covnat_loc.F
r1669 r1864 3 3 ! 4 4 SUBROUTINE covnat_loc(klevel,ucov, vcov, unat, vnat ) 5 USE parallel 5 USE parallel_lmdz 6 6 IMPLICIT NONE 7 7 -
LMDZ5/branches/testing/libf/dyn3dmem/dimensions_mod.F90
r1669 r1864 1 MODULE dimensions 1 MODULE dimensions_mod 2 2 INCLUDE 'dimensions.h' 3 3 INCLUDE 'paramet.h' 4 END MODULE dimensions 4 END MODULE dimensions_mod -
LMDZ5/branches/testing/libf/dyn3dmem/dissip_loc.F
r1669 r1864 1 1 SUBROUTINE dissip_loc( vcov,ucov,teta,p, dv,du,dh ) 2 2 c 3 USE parallel 3 USE parallel_lmdz 4 4 USE write_field_loc 5 5 USE dissip_mod … … 56 56 !$OMP THREADPRIVATE(first) 57 57 58 PRINT *,"----> calldissip"59 58 IF (first) THEN 60 59 CALL dissip_allocate -
LMDZ5/branches/testing/libf/dyn3dmem/dissip_mod.F90
r1669 r1864 7 7 SUBROUTINE dissip_allocate 8 8 USE bands 9 USE allocate_field 10 USE parallel 11 USE dimensions 9 USE allocate_field_mod 10 USE parallel_lmdz 11 USE dimensions_mod 12 12 USE gradiv2_mod, ONLY : gradiv2_allocate 13 13 USE nxgraro2_mod, ONLY : nxgraro2_allocate … … 23 23 24 24 SUBROUTINE dissip_switch_dissip(dist) 25 USE allocate_field 25 USE allocate_field_mod 26 26 USE bands 27 USE parallel 27 USE parallel_lmdz 28 28 USE gradiv2_mod,ONLY : gradiv2_switch_dissip 29 29 USE nxgraro2_mod,ONLY : nxgraro2_switch_dissip -
LMDZ5/branches/testing/libf/dyn3dmem/diverg_gam_loc.F
r1669 r1864 9 9 c x et y etant des composantes covariantes ... 10 10 c ********************************************************************* 11 USE parallel 11 USE parallel_lmdz 12 12 IMPLICIT NONE 13 13 c -
LMDZ5/branches/testing/libf/dyn3dmem/diverg_p.F
r1669 r1864 8 8 c x et y etant des composantes covariantes ... 9 9 c ********************************************************************* 10 USE parallel 10 USE parallel_lmdz 11 11 IMPLICIT NONE 12 12 c -
LMDZ5/branches/testing/libf/dyn3dmem/divergf_loc.F
r1669 r1864 8 8 c x et y etant des composantes covariantes ... 9 9 c ********************************************************************* 10 USE PARALLEL10 USE parallel_lmdz 11 11 USE mod_filtreg_p 12 12 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/divgrad2_loc.F
r1669 r1864 10 10 c divgra est un argument de sortie pour le s-prg 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 USE times 14 14 USE mod_hallo … … 31 31 INTEGER l,ij,iter,lh 32 32 c ................................................................... 33 Type(Request) :: request_dissip 33 Type(Request),SAVE :: request_dissip 34 !$OMP THREADPRIVATE(request_dissip) 34 35 INTEGER ijb,ije 35 36 -
LMDZ5/branches/testing/libf/dyn3dmem/divgrad2_mod.F90
r1669 r1864 7 7 SUBROUTINE divgrad2_allocate 8 8 USE bands 9 USE allocate_field 10 USE parallel 11 USE dimensions 9 USE allocate_field_mod 10 USE parallel_lmdz 11 USE dimensions_mod 12 12 IMPLICIT NONE 13 13 TYPE(distrib),POINTER :: d … … 20 20 21 21 SUBROUTINE divgrad2_switch_dissip(dist) 22 USE allocate_field 22 USE allocate_field_mod 23 23 USE bands 24 USE parallel 24 USE parallel_lmdz 25 25 IMPLICIT NONE 26 26 TYPE(distrib),INTENT(IN) :: dist -
LMDZ5/branches/testing/libf/dyn3dmem/dteta1_loc.F
r1669 r1864 1 1 SUBROUTINE dteta1_loc ( teta, pbaru, pbarv, dteta) 2 USE parallel 2 USE parallel_lmdz 3 3 USE write_field_p 4 4 USE mod_filtreg_p -
LMDZ5/branches/testing/libf/dyn3dmem/dudv1_loc.F
r1669 r1864 1 1 SUBROUTINE dudv1_loc ( vorpot, pbaru, pbarv, du, dv ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 c -
LMDZ5/branches/testing/libf/dyn3dmem/dudv2_loc.F
r1669 r1864 1 1 SUBROUTINE dudv2_loc ( teta, pkf, bern, du, dv ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 c -
LMDZ5/branches/testing/libf/dyn3dmem/dynetat0_loc.F
r1707 r1864 6 6 USE infotrac 7 7 use control_mod, only : planet_type 8 USE parallel 8 USE parallel_lmdz 9 9 IMPLICIT NONE 10 10 -
LMDZ5/branches/testing/libf/dyn3dmem/dynredem_loc.F
r1707 r1864 7 7 USE IOIPSL 8 8 #endif 9 USE parallel 9 USE parallel_lmdz 10 10 USE mod_hallo 11 11 USE infotrac … … 528 528 SUBROUTINE dynredem1_loc(fichnom,time, 529 529 . vcov,ucov,teta,q,masse,ps) 530 USE parallel 530 USE parallel_lmdz 531 531 USE mod_hallo 532 532 USE infotrac -
LMDZ5/branches/testing/libf/dyn3dmem/dynredem_mod.F90
r1707 r1864 7 7 8 8 SUBROUTINE dynredem_write_u(ncid,id,var,ll) 9 USE dimensions 10 USE parallel 9 USE dimensions_mod 10 USE parallel_lmdz 11 11 USE mod_hallo 12 12 IMPLICIT NONE … … 72 72 73 73 SUBROUTINE dynredem_write_v(ncid,id,var,ll) 74 USE dimensions 75 USE parallel 74 USE dimensions_mod 75 USE parallel_lmdz 76 76 USE mod_hallo 77 77 IMPLICIT NONE … … 137 137 138 138 SUBROUTINE dynredem_read_u(ncid,id,var,ll) 139 USE dimensions 140 USE parallel 139 USE dimensions_mod 140 USE parallel_lmdz 141 141 USE mod_hallo 142 142 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/enercin_loc.F
r1669 r1864 1 1 SUBROUTINE enercin_loc ( vcov, ucov, vcont, ucont, ecin ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 -
LMDZ5/branches/testing/libf/dyn3dmem/exner_hyb_loc.F
r1707 r1864 29 29 c 30 30 c 31 USE parallel 31 USE parallel_lmdz 32 32 USE mod_filtreg_p 33 33 USE write_field_loc -
LMDZ5/branches/testing/libf/dyn3dmem/exner_milieu_loc.F
r1795 r1864 26 26 c ( voir note de Fr.Hourdin ) , 27 27 c 28 USE parallel 28 USE parallel_lmdz 29 29 USE mod_filtreg_p 30 30 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/filtreg_p.F
r1707 r1864 3 3 SUBROUTINE filtreg_p ( champ, ibeg, iend, nlat, nbniv, 4 4 & ifiltre, iaire, griscal ,iter) 5 USE Parallel, only : OMP_CHUNK5 USE parallel_lmdz, only : OMP_CHUNK 6 6 USE mod_filtre_fft 7 7 USE timer_filtre -
LMDZ5/branches/testing/libf/dyn3dmem/flumass_loc.F
r1669 r1864 1 1 SUBROUTINE flumass_loc(massebx,masseby,vcont,ucont,pbaru,pbarv) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 -
LMDZ5/branches/testing/libf/dyn3dmem/friction_loc.F
r1707 r1864 4 4 c======================================================================= 5 5 SUBROUTINE friction_loc(ucov,vcov,pdt) 6 USE parallel 6 USE parallel_lmdz 7 7 USE control_mod 8 8 #ifdef CPP_IOIPSL -
LMDZ5/branches/testing/libf/dyn3dmem/gcm.F
r1795 r1864 11 11 12 12 USE mod_const_mpi, ONLY: init_const_mpi 13 USE parallel 13 USE parallel_lmdz 14 14 USE infotrac 15 15 USE mod_interface_dyn_phys -
LMDZ5/branches/testing/libf/dyn3dmem/geopot_loc.F
r1669 r1864 1 1 SUBROUTINE geopot_loc ( ngrid, teta, pk, pks, phis, phi ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 -
LMDZ5/branches/testing/libf/dyn3dmem/getparam.F90
r1669 r1864 18 18 CONTAINS 19 19 SUBROUTINE ini_getparam(fichier) 20 USE parallel 20 USE parallel_lmdz 21 21 ! 22 22 IMPLICIT NONE … … 28 28 29 29 SUBROUTINE fin_getparam 30 USE parallel 30 USE parallel_lmdz 31 31 ! 32 32 IMPLICIT NONE … … 37 37 38 38 SUBROUTINE getparamr(TARGET,def_val,ret_val,comment) 39 USE parallel 39 USE parallel_lmdz 40 40 ! 41 41 IMPLICIT NONE … … 63 63 64 64 SUBROUTINE getparami(TARGET,def_val,ret_val,comment) 65 USE parallel 65 USE parallel_lmdz 66 66 ! 67 67 IMPLICIT NONE … … 90 90 91 91 SUBROUTINE getparaml(TARGET,def_val,ret_val,comment) 92 USE parallel 92 USE parallel_lmdz 93 93 ! 94 94 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/gr_dyn_fi_p.F
r1707 r1864 7 7 USE mod_interface_dyn_phys 8 8 USE dimphy 9 USE PARALLEL9 USE parallel_lmdz 10 10 IMPLICIT NONE 11 11 c======================================================================= -
LMDZ5/branches/testing/libf/dyn3dmem/gr_fi_dyn_p.F
r1707 r1864 7 7 USE mod_interface_dyn_phys 8 8 USE dimphy 9 use parallel9 USE parallel_lmdz 10 10 IMPLICIT NONE 11 11 c======================================================================= -
LMDZ5/branches/testing/libf/dyn3dmem/gr_u_scal_loc.F
r1669 r1864 25 25 c 26 26 c======================================================================= 27 USE parallel 27 USE parallel_lmdz 28 28 IMPLICIT NONE 29 29 c----------------------------------------------------------------------- -
LMDZ5/branches/testing/libf/dyn3dmem/gr_v_scal_loc.F
r1669 r1864 25 25 c 26 26 c======================================================================= 27 USE parallel 27 USE parallel_lmdz 28 28 IMPLICIT NONE 29 29 c----------------------------------------------------------------------- -
LMDZ5/branches/testing/libf/dyn3dmem/grad_loc.F
r1669 r1864 10 10 c pgx et pgy sont des arguments de sortie pour le s-prog 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 IMPLICIT NONE 14 14 c -
LMDZ5/branches/testing/libf/dyn3dmem/grad_p.F
r1669 r1864 10 10 c pgx et pgy sont des arguments de sortie pour le s-prog 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 IMPLICIT NONE 14 14 c -
LMDZ5/branches/testing/libf/dyn3dmem/gradiv2_loc.F
r1669 r1864 13 13 c 14 14 c 15 USE parallel 15 USE parallel_lmdz 16 16 USE times 17 17 USE Write_field_p … … 38 38 INTEGER l,ij,iter,ld 39 39 INTEGER :: ijb,ije,jjb,jje 40 Type(Request) :: request_dissip41 40 Type(Request),SAVE :: request_dissip 41 !$OMP THREADPRIVATE(request_dissip) 42 42 c ........................................................ 43 43 c -
LMDZ5/branches/testing/libf/dyn3dmem/gradiv2_mod.F90
r1669 r1864 9 9 SUBROUTINE gradiv2_allocate 10 10 USE bands 11 USE allocate_field 12 USE parallel 13 USE dimensions 11 USE allocate_field_mod 12 USE parallel_lmdz 13 USE dimensions_mod 14 14 IMPLICIT NONE 15 15 TYPE(distrib),POINTER :: d … … 24 24 25 25 SUBROUTINE gradiv2_switch_dissip(dist) 26 USE allocate_field 26 USE allocate_field_mod 27 27 USE bands 28 USE parallel 28 USE parallel_lmdz 29 29 IMPLICIT NONE 30 30 TYPE(distrib),INTENT(IN) :: dist -
LMDZ5/branches/testing/libf/dyn3dmem/groupe_loc.F
r1669 r1864 1 1 subroutine groupe_loc(pext,pbaru,pbarv,pbarum,pbarvm,wm) 2 USE parallel 2 USE parallel_lmdz 3 3 USE Write_field_loc 4 4 USE groupe_mod -
LMDZ5/branches/testing/libf/dyn3dmem/groupe_mod.F90
r1669 r1864 8 8 SUBROUTINE groupe_allocate 9 9 USE bands 10 USE allocate_field 11 USE parallel 10 USE allocate_field_mod 11 USE parallel_lmdz 12 12 USE infotrac 13 13 USE advtrac_mod, ONLY : advtrac_allocate … … 25 25 26 26 SUBROUTINE groupe_switch_caldyn(dist) 27 USE allocate_field 27 USE allocate_field_mod 28 28 USE bands 29 USE parallel 29 USE parallel_lmdz 30 30 IMPLICIT NONE 31 31 TYPE(distrib),INTENT(IN) :: dist -
LMDZ5/branches/testing/libf/dyn3dmem/groupeun_loc.F
r1669 r1864 1 1 SUBROUTINE groupeun_loc(jjmax,llmax,sb,se,jjb,jje,q) 2 USE parallel 2 USE parallel_lmdz 3 3 USE Write_Field_p 4 4 IMPLICIT NONE … … 135 135 SUBROUTINE init_groupeun_loc(airen_tab, aires_tab) 136 136 137 USE parallel 137 USE parallel_lmdz 138 138 IMPLICIT NONE 139 139 -
LMDZ5/branches/testing/libf/dyn3dmem/guide_loc_mod.F90
r1750 r1864 12 12 USE Write_Field_loc 13 13 use netcdf, only: nf90_nowrite, nf90_open, nf90_inq_varid, nf90_close 14 USE parallel 14 USE parallel_lmdz 15 15 USE pres2lev_mod 16 16 … … 293 293 !======================================================================= 294 294 SUBROUTINE guide_main(itau,ucov,vcov,teta,q,masse,ps) 295 use parallel295 USE parallel_lmdz 296 296 USE control_mod 297 USE write_field_loc 297 298 298 299 IMPLICIT NONE … … 313 314 !$OMP THREADPRIVATE(first) 314 315 LOGICAL :: f_out ! sortie guidage 315 REAL, DIMENSION (ijb_u:ije_u,llm) :: f_add ! var aux: champ de guidage 316 REAL, ALLOCATABLE, SAVE, DIMENSION (:,:) :: f_addu ! var aux: champ de guidage 317 REAL, ALLOCATABLE, SAVE, DIMENSION (:,:) :: f_addv ! var aux: champ de guidage 316 318 ! Variables pour fonction Exner (P milieu couche) 317 REAL, DIMENSION (iip1,jjb_u:jje_u,llm) :: pk, pkf318 REAL, DIMENSION (iip1,jjb_u:jje_u,llm) :: alpha, beta319 REAL, DIMENSION (iip1,jjb_u:jje_u) :: pks319 REAL, ALLOCATABLE, SAVE, DIMENSION (:,:,:) :: pk, pkf 320 REAL, ALLOCATABLE, SAVE, DIMENSION (:,:,:) :: alpha, beta 321 REAL, ALLOCATABLE, SAVE, DIMENSION (:,:) :: pks 320 322 REAL :: unskap 321 REAL, DIMENSION (ijb_u:ije_u,llmp1) :: p ! besoin si guide_P323 REAL, ALLOCATABLE, SAVE, DIMENSION (:,:) :: p ! besoin si guide_P 322 324 ! Compteurs temps: 323 325 INTEGER, SAVE :: step_rea,count_no_rea,itau_test ! lecture guidage … … 329 331 330 332 INTEGER :: i,j,l 331 333 332 334 !$OMP MASTER 333 335 ijbu=ij_begin ; ijeu=ij_end ; ijnu=ijeu-ijbu+1 … … 358 360 first=.FALSE. 359 361 !$OMP MASTER 362 ALLOCATE(f_addu(ijb_u:ije_u,llm) ) 363 ALLOCATE(f_addv(ijb_v:ije_v,llm) ) 364 ALLOCATE(pk(iip1,jjb_u:jje_u,llm) ) 365 ALLOCATE(pkf(iip1,jjb_u:jje_u,llm) ) 366 ALLOCATE(alpha(iip1,jjb_u:jje_u,llm) ) 367 ALLOCATE(beta(iip1,jjb_u:jje_u,llm) ) 368 ALLOCATE(pks(iip1,jjb_u:jje_u) ) 369 ALLOCATE(p(ijb_u:ije_u,llmp1) ) 360 370 CALL guide_init 361 371 !$OMP END MASTER … … 367 377 factt=dtvr*iperiod/daysec 368 378 !$OMP MASTER 369 call tau2alpha(3, iip1,jjnb_v ,factt,tau_min_v,tau_max_v,alpha_v)370 call tau2alpha(2, iip1,jjnb_u,factt,tau_min_u,tau_max_u,alpha_u)371 call tau2alpha(1, iip1,jjnb_u,factt,tau_min_T,tau_max_T,alpha_T)372 call tau2alpha(1, iip1,jjnb_u,factt,tau_min_P,tau_max_P,alpha_P)373 call tau2alpha(1, iip1,jjnb_u,factt,tau_min_Q,tau_max_Q,alpha_Q)379 call tau2alpha(3, iip1, jjb_v, jje_v, factt, tau_min_v, tau_max_v, alpha_v) 380 call tau2alpha(2, iip1, jjb_u, jje_u, factt, tau_min_u, tau_max_u, alpha_u) 381 call tau2alpha(1, iip1, jjb_u, jje_u, factt, tau_min_T, tau_max_T, alpha_T) 382 call tau2alpha(1, iip1, jjb_u, jje_u, factt, tau_min_P, tau_max_P, alpha_P) 383 call tau2alpha(1, iip1, jjb_u, jje_u, factt, tau_min_Q, tau_max_Q, alpha_Q) 374 384 ! correction de rappel dans couche limite 375 385 if (guide_BL) then … … 381 391 endif 382 392 !$OMP END MASTER 393 !$OMP BARRIER 383 394 ! ini_anal: etat initial egal au guidage 384 395 IF (ini_anal) THEN 385 396 CALL guide_interp(ps,teta) 386 IF (guide_u) ucov(ijbu:ijeu,:)=ugui2(ijbu:ijeu,:) 387 IF (guide_v) vcov(ijbv:ijev,:)=ugui2(ijbv:ijev,:) 388 IF (guide_T) teta(ijbu:ijeu,:)=tgui2(ijbu:ijeu,:) 389 IF (guide_Q) q(ijbu:ijeu,:)=qgui2(ijbu:ijeu,:) 397 !$OMP DO 398 DO l=1,llm 399 IF (guide_u) ucov(ijbu:ijeu,l)=ugui2(ijbu:ijeu,l) 400 IF (guide_v) vcov(ijbv:ijev,l)=ugui2(ijbv:ijev,l) 401 IF (guide_T) teta(ijbu:ijeu,l)=tgui2(ijbu:ijeu,l) 402 IF (guide_Q) q(ijbu:ijeu,l)=qgui2(ijbu:ijeu,l) 403 ENDDO 404 390 405 IF (guide_P) THEN 406 !$OMP MASTER 391 407 ps(ijbu:ijeu)=psgui2(ijbu:ijeu) 408 !$OMP END MASTER 409 !$OMP BARRIER 392 410 CALL pression_loc(ijnb_u,ap,bp,ps,p) 393 411 CALL massdair_loc(p,masse) 412 !$OMP BARRIER 394 413 ENDIF 395 414 RETURN … … 398 417 IF (guide_u) THEN 399 418 !+tard CALL writefield_u('unat',unat1) 400 CALL writefield_u('ucov',ucov)419 ! CALL writefield_u('ucov',ucov) 401 420 ENDIF 402 421 IF (guide_T) THEN 403 422 !+tard CALL writefield_p('tnat',tnat1) 404 CALL writefield_u('teta',teta)423 ! CALL writefield_u('teta',teta) 405 424 ENDIF 406 425 … … 424 443 stop 425 444 ELSE 445 !$OMP MASTER 426 446 IF (guide_v) vnat1(:,jjbv:jjev,:)=vnat2(:,jjbv:jjev,:) 427 447 IF (guide_u) unat1(:,jjbu:jjeu,:)=unat2(:,jjbu:jjeu,:) … … 430 450 IF (guide_plevs.EQ.2) pnat1(:,jjbu:jjeu,:)=pnat2(:,jjbu:jjeu,:) 431 451 IF (guide_P.OR.guide_plevs.EQ.1) psnat1(:,jjbu:jjeu)=psnat2(:,jjbu:jjeu) 452 !$OMP END MASTER 453 !$OMP BARRIER 432 454 step_rea=step_rea+1 433 455 itau_test=itau … … 435 457 'apres ',count_no_rea,' non lectures' 436 458 IF (guide_2D) THEN 459 !$OMP MASTER 437 460 CALL guide_read2D(step_rea) 461 !$OMP END MASTER 462 !$OMP BARRIER 438 463 ELSE 464 !$OMP MASTER 439 465 CALL guide_read(step_rea) 466 !$OMP END MASTER 467 !$OMP BARRIER 440 468 ENDIF 441 469 count_no_rea=0 … … 460 488 ENDIF 461 489 462 !----------------------------------------------------------------------- 490 ! CALL WriteField_u('ucov_guide',ucov) 491 ! CALL WriteField_v('vcov_guide',vcov) 492 ! CALL WriteField_u('teta_guide',teta) 493 ! CALL WriteField_u('masse_guide',masse) 494 495 496 !----------------------------------------------------------------------- 463 497 ! Ajout des champs de guidage 464 498 !----------------------------------------------------------------------- … … 473 507 CALL exner_milieu_loc(ip1jmp1,ps,p,beta,pks,pk,pkf) 474 508 endif 509 !$OMP BARRIER 475 510 unskap=1./kappa 511 !$OMP DO 476 512 DO l = 1, llm 477 513 DO j=jjbu,jjeu … … 481 517 ENDDO 482 518 ENDDO 519 !$OMP MASTER 483 520 CALL guide_out("P",jjp1,llm,p,1.) 521 !$OMP END MASTER 522 !$OMP BARRIER 484 523 ENDIF 485 524 486 525 if (guide_u) then 487 526 if (guide_add) then 488 f_add(ijbu:ijeu,:)=(1.-tau)*ugui1(ijbu:ijeu,:)+tau*ugui2(ijbu:ijeu,:) 527 !$OMP DO 528 DO l=1,llm 529 f_addu(ijbu:ijeu,l)=(1.-tau)*ugui1(ijbu:ijeu,l)+tau*ugui2(ijbu:ijeu,l) 530 ENDDO 489 531 else 490 f_add(ijbu:ijeu,:)=(1.-tau)*ugui1(ijbu:ijeu,:)+tau*ugui2(ijbu:ijeu,:)-ucov(ijbu:ijeu,:) 532 !$OMP DO 533 DO l=1,llm 534 f_addu(ijbu:ijeu,l)=(1.-tau)*ugui1(ijbu:ijeu,l)+tau*ugui2(ijbu:ijeu,l)-ucov(ijbu:ijeu,l) 535 ENDDO 491 536 endif 492 493 if (guide_zon) CALL guide_zonave_u(1,llm,f_add) 494 CALL guide_addfield_u(llm,f_add,alpha_u) 495 IF (f_out) CALL guide_out("U",jjp1,llm,f_add(:,:),factt) 496 ucov(ijbu:ijeu,:)=ucov(ijbu:ijeu,:)+f_add(ijbu:ijeu,:) 537 538 ! CALL WriteField_u('f_addu',f_addu) 539 540 if (guide_zon) CALL guide_zonave_u(1,llm,f_addu) 541 CALL guide_addfield_u(llm,f_addu,alpha_u) 542 ! CALL WriteField_u('f_addu',f_addu) 543 ! CALL WriteField_u('alpha_u',alpha_u) 544 !$OMP MASTER 545 IF (f_out) CALL guide_out("U",jjp1,llm,f_addu(:,:),factt) 546 !$OMP END MASTER 547 !$OMP BARRIER 548 549 !$OMP DO 550 DO l=1,llm 551 ucov(ijbu:ijeu,l)=ucov(ijbu:ijeu,l)+f_addu(ijbu:ijeu,l) 552 ENDDO 553 497 554 endif 498 555 499 556 if (guide_T) then 500 557 if (guide_add) then 501 f_add(ijbu:ijeu,:)=(1.-tau)*tgui1(ijbu:ijeu,:)+tau*tgui2(ijbu:ijeu,:) 558 !$OMP DO 559 DO l=1,llm 560 f_addu(ijbu:ijeu,l)=(1.-tau)*tgui1(ijbu:ijeu,l)+tau*tgui2(ijbu:ijeu,l) 561 ENDDO 502 562 else 503 f_add(ijbu:ijeu,:)=(1.-tau)*tgui1(ijbu:ijeu,:)+tau*tgui2(ijbu:ijeu,:)-teta(ijbu:ijeu,:) 563 !$OMP DO 564 DO l=1,llm 565 f_addu(ijbu:ijeu,l)=(1.-tau)*tgui1(ijbu:ijeu,l)+tau*tgui2(ijbu:ijeu,l)-teta(ijbu:ijeu,l) 566 ENDDO 504 567 endif 505 if (guide_zon) CALL guide_zonave_u(2,llm,f_add) 506 CALL guide_addfield_u(llm,f_add,alpha_T) 507 IF (f_out) CALL guide_out("T",jjp1,llm,f_add(:,:),factt) 508 teta(ijbu:ijeu,:)=teta(ijbu:ijeu,:)+f_add(ijbu:ijeu,:) 568 if (guide_zon) CALL guide_zonave_u(2,llm,f_addu) 569 CALL guide_addfield_u(llm,f_addu,alpha_T) 570 !$OMP MASTER 571 IF (f_out) CALL guide_out("T",jjp1,llm,f_addu(:,:),factt) 572 !$OMP END MASTER 573 !$OMP BARRIER 574 !$OMP DO 575 DO l=1,llm 576 teta(ijbu:ijeu,l)=teta(ijbu:ijeu,l)+f_addu(ijbu:ijeu,l) 577 ENDDO 509 578 endif 510 579 511 580 if (guide_P) then 512 581 if (guide_add) then 513 f_add(ijbu:ijeu,1)=(1.-tau)*psgui1(ijbu:ijeu)+tau*psgui2(ijbu:ijeu) 582 !$OMP MASTER 583 f_addu(ijbu:ijeu,1)=(1.-tau)*psgui1(ijbu:ijeu)+tau*psgui2(ijbu:ijeu) 584 !$OMP END MASTER 585 !$OMP BARRIER 514 586 else 515 f_add(ijbu:ijeu,1)=(1.-tau)*psgui1(ijbu:ijeu)+tau*psgui2(ijbu:ijeu)-ps(ijbu:ijeu) 587 !$OMP MASTER 588 f_addu(ijbu:ijeu,1)=(1.-tau)*psgui1(ijbu:ijeu)+tau*psgui2(ijbu:ijeu)-ps(ijbu:ijeu) 589 !$OMP END MASTER 590 !$OMP BARRIER 516 591 endif 517 if (guide_zon) CALL guide_zonave_u(2,1,f_add(ijb_u:ije_u,1)) 518 CALL guide_addfield_u(1,f_add(ijb_u:ije_u,1),alpha_P) 519 IF (f_out) CALL guide_out("SP",jjp1,1,f_add(1:ip1jmp1,1),factt) 520 ps(ijbu:ijeu)=ps(ijbu:ijeu)+f_add(ijbu:ijeu,1) 592 if (guide_zon) CALL guide_zonave_u(2,1,f_addu(ijb_u:ije_u,1)) 593 CALL guide_addfield_u(1,f_addu(ijb_u:ije_u,1),alpha_P) 594 !$OMP MASTER 595 IF (f_out) CALL guide_out("SP",jjp1,1,f_addu(1:ip1jmp1,1),factt) 596 !$OMP END MASTER 597 !$OMP BARRIER 598 !$OMP MASTER 599 ps(ijbu:ijeu)=ps(ijbu:ijeu)+f_addu(ijbu:ijeu,1) 600 !$OMP END MASTER 601 !$OMP BARRIER 521 602 CALL pression_loc(ijnb_u,ap,bp,ps,p) 522 603 CALL massdair_loc(p,masse) 604 !$OMP BARRIER 523 605 endif 524 606 525 607 if (guide_Q) then 526 608 if (guide_add) then 527 f_add(ijbu:ijeu,:)=(1.-tau)*qgui1(ijbu:ijeu,:)+tau*qgui2(ijbu:ijeu,:) 609 !$OMP DO 610 DO l=1,llm 611 f_addu(ijbu:ijeu,l)=(1.-tau)*qgui1(ijbu:ijeu,l)+tau*qgui2(ijbu:ijeu,l) 612 ENDDO 528 613 else 529 f_add(ijbu:ijeu,:)=(1.-tau)*qgui1(ijbu:ijeu,:)+tau*qgui2(ijbu:ijeu,:)-q(ijbu:ijeu,:) 614 !$OMP DO 615 DO l=1,llm 616 f_addu(ijbu:ijeu,l)=(1.-tau)*qgui1(ijbu:ijeu,l)+tau*qgui2(ijbu:ijeu,l)-q(ijbu:ijeu,l) 617 ENDDO 530 618 endif 531 if (guide_zon) CALL guide_zonave_u(2,llm,f_add) 532 CALL guide_addfield_u(llm,f_add,alpha_Q) 533 IF (f_out) CALL guide_out("Q",jjp1,llm,f_add(:,:),factt) 534 q(ijbu:ijeu,:)=q(ijbu:ijeu,:)+f_add(ijbu:ijeu,:) 619 if (guide_zon) CALL guide_zonave_u(2,llm,f_addu) 620 CALL guide_addfield_u(llm,f_addu,alpha_Q) 621 !$OMP MASTER 622 IF (f_out) CALL guide_out("Q",jjp1,llm,f_addu(:,:),factt) 623 !$OMP END MASTER 624 !$OMP BARRIER 625 626 !$OMP DO 627 DO l=1,llm 628 q(ijbu:ijeu,l)=q(ijbu:ijeu,l)+f_addu(ijbu:ijeu,l) 629 ENDDO 535 630 endif 536 631 537 632 if (guide_v) then 538 633 if (guide_add) then 539 f_add(ijbv:ijev,:)=(1.-tau)*vgui1(ijbv:ijev,:)+tau*vgui2(ijbv:ijev,:) 634 !$OMP DO 635 DO l=1,llm 636 f_addv(ijbv:ijev,l)=(1.-tau)*vgui1(ijbv:ijev,l)+tau*vgui2(ijbv:ijev,l) 637 ENDDO 638 540 639 else 541 f_add(ijbv:ijev,:)=(1.-tau)*vgui1(ijbv:ijev,:)+tau*vgui2(ijbv:ijev,:)-vcov(ijbv:ijev,:) 640 !$OMP DO 641 DO l=1,llm 642 f_addv(ijbv:ijev,l)=(1.-tau)*vgui1(ijbv:ijev,l)+tau*vgui2(ijbv:ijev,l)-vcov(ijbv:ijev,l) 643 ENDDO 644 542 645 endif 646 ! CALL WriteField_v('f_addv',f_addv) 647 648 if (guide_zon) CALL guide_zonave_v(2,jjm,llm,f_addv(ijb_v:ije_v,:)) 649 ! CALL WriteField_v('f_addv',f_addv) 543 650 544 if (guide_zon) CALL guide_zonave_v(2,jjm,llm,f_add(ijb_v:ije_v,:)) 545 CALL guide_addfield_v(llm,f_add(ijb_v:ije_v,:),alpha_v) 546 IF (f_out) CALL guide_out("V",jjm,llm,f_add(1:ip1jm,:),factt) 547 vcov(ijbv:ijev,:)=vcov(ijbv:ijev,:)+f_add(ijbv:ijev,:) 651 CALL guide_addfield_v(llm,f_addv(ijb_v:ije_v,:),alpha_v) 652 ! CALL WriteField_v('f_addv',f_addv) 653 ! CALL WriteField_v('alpha_v',alpha_v) 654 !$OMP MASTER 655 IF (f_out) CALL guide_out("V",jjm,llm,f_addv(1:ip1jm,:),factt) 656 !$OMP END MASTER 657 !$OMP BARRIER 658 ! CALL WriteField_v('f_addv',f_addv) 659 660 !$OMP DO 661 DO l=1,llm 662 vcov(ijbv:ijev,l)=vcov(ijbv:ijev,l)+f_addv(ijbv:ijev,l) 663 ENDDO 548 664 endif 665 666 ! CALL WriteField_u('ucov_guide',ucov) 667 ! CALL WriteField_v('vcov_guide',vcov) 668 ! CALL WriteField_u('teta_guide',teta) 669 ! CALL WriteField_u('masse_guide',masse) 549 670 550 671 END SUBROUTINE guide_main … … 566 687 INTEGER :: l 567 688 689 !$OMP DO 568 690 DO l=1,vsize 569 691 field(ijbu:ijeu,l)=alpha(ijbu:ijeu)*field(ijbu:ijeu,l)*alpha_pcor(l) … … 588 710 INTEGER :: l 589 711 712 !$OMP DO 590 713 DO l=1,vsize 591 714 field(ijbv:ijev,l)=alpha(ijbv:ijev)*field(ijbv:ijev,l)*alpha_pcor(l) … … 612 735 ! Local variables 613 736 LOGICAL, SAVE :: first=.TRUE. 737 !$OMP THREADPRIVATE(first) 738 614 739 INTEGER, DIMENSION (2), SAVE :: imin, imax ! averaging domain 740 !$OMP THREADPRIVATE(imin,imax) 615 741 INTEGER :: i,j,l,ij 616 742 REAL, DIMENSION (iip1) :: lond ! longitude in Deg. … … 636 762 ENDIF 637 763 638 fieldm=0.639 764 765 !$OMP DO 640 766 DO l=1,vsize 767 fieldm(:,l)=0. 641 768 ! Compute zonal average 642 769 … … 680 807 ! Local variables 681 808 LOGICAL, SAVE :: first=.TRUE. 809 !$OMP THREADPRIVATE(first) 682 810 INTEGER, DIMENSION (2), SAVE :: imin, imax ! averaging domain 811 !$OMP THREADPRIVATE(imin, imax) 683 812 INTEGER :: i,j,l,ij 684 813 REAL, DIMENSION (iip1) :: lond ! longitude in Deg. … … 704 833 ENDIF 705 834 706 fieldm=0. 707 835 !$OMP DO 708 836 DO l=1,vsize 709 837 ! Compute zonal average 838 fieldm(:,l)=0. 710 839 DO j=jjbv,jjev 711 840 DO i=imin(typ),imax(typ) … … 729 858 !======================================================================= 730 859 SUBROUTINE guide_interp(psi,teta) 731 USE parallel 860 USE parallel_lmdz 732 861 USE mod_hallo 733 862 USE Bands … … 744 873 745 874 LOGICAL, SAVE :: first=.TRUE. 875 !$OMP THREADPRIVATE(first) 746 876 ! Variables pour niveaux pression: 747 REAL, DIMENSION (iip1,jjb_u:jje_u,nlevnc) :: plnc1,plnc2 !niveaux pression guidage748 REAL, DIMENSION (iip1,jjb_u:jje_u,llm) :: plunc,plsnc !niveaux pression modele749 REAL, DIMENSION (iip1,jjb_v:jje_v,llm) :: plvnc !niveaux pression modele750 REAL, DIMENSION (iip1,jjb_u:jje_u,llmp1) :: p ! pression intercouches751 REAL, DIMENSION (iip1,jjb_u:jje_u,llm) :: pls, pext ! var intermediaire752 REAL, DIMENSION (iip1,jjb_u:jje_u,llm) :: pbarx753 REAL, DIMENSION (iip1,jjb_v:jje_v,llm) :: pbary877 REAL, ALLOCATABLE, SAVE, DIMENSION (:,:,:) :: plnc1,plnc2 !niveaux pression guidage 878 REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:) :: plunc,plsnc !niveaux pression modele 879 REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:) :: plvnc !niveaux pression modele 880 REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:) :: p ! pression intercouches 881 REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:) :: pls, pext ! var intermediaire 882 REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:) :: pbarx 883 REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:) :: pbary 754 884 ! Variables pour fonction Exner (P milieu couche) 755 REAL, DIMENSION (iip1,jjb_u:jje_u,llm) :: pk, pkf756 REAL, DIMENSION (iip1,jjb_u:jje_u,llm) :: alpha, beta757 REAL , DIMENSION (iip1,jjb_u:jje_u) :: pks885 REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:) :: pk, pkf 886 REAL, ALLOCATABLE, SAVE, DIMENSION (:,:,:) :: alpha, beta 887 REAL ,ALLOCATABLE, SAVE, DIMENSION (:,:) :: pks 758 888 REAL :: unskap 759 889 ! Pression de vapeur saturante 760 REAL, DIMENSION (ijb_u:ije_u,llm) :: qsat890 REAL, ALLOCATABLE, SAVE,DIMENSION (:,:) :: qsat 761 891 !Variables intermediaires interpolation 762 REAL, DIMENSION (iip1,jjb_u:jje_u,llm) :: zu1,zu2763 REAL, DIMENSION (iip1,jjb_v:jje_v,llm) :: zv1,zv2892 REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:) :: zu1,zu2 893 REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:) :: zv1,zv2 764 894 765 895 INTEGER :: i,j,l,ij 766 TYPE(Request) :: Req767 896 TYPE(Request),SAVE :: Req 897 !$OMP THREADPRIVATE(Req) 768 898 print *,'Guide: conversion variables guidage' 769 899 ! ----------------------------------------------------------------- 770 900 ! Calcul des niveaux de pression champs guidage (pour T et Q) 771 901 ! ----------------------------------------------------------------- 902 IF (first) THEN 903 !$OMP MASTER 904 ALLOCATE(plnc1(iip1,jjb_u:jje_u,nlevnc) ) 905 ALLOCATE(plnc2(iip1,jjb_u:jje_u,nlevnc) ) 906 ALLOCATE(plunc(iip1,jjb_u:jje_u,llm) ) 907 ALLOCATE(plsnc(iip1,jjb_u:jje_u,llm) ) 908 ALLOCATE(plvnc(iip1,jjb_v:jje_v,llm) ) 909 ALLOCATE(p(iip1,jjb_u:jje_u,llmp1) ) 910 ALLOCATE(pls(iip1,jjb_u:jje_u,llm) ) 911 ALLOCATE(pext(iip1,jjb_u:jje_u,llm) ) 912 ALLOCATE(pbarx(iip1,jjb_u:jje_u,llm) ) 913 ALLOCATE(pbary(iip1,jjb_v:jje_v,llm) ) 914 ALLOCATE(pk(iip1,jjb_u:jje_u,llm) ) 915 ALLOCATE(pkf(iip1,jjb_u:jje_u,llm) ) 916 ALLOCATE(alpha(iip1,jjb_u:jje_u,llm) ) 917 ALLOCATE(beta(iip1,jjb_u:jje_u,llm) ) 918 ALLOCATE(pks (iip1,jjb_u:jje_u) ) 919 ALLOCATE(qsat(ijb_u:ije_u,llm) ) 920 ALLOCATE(zu1(iip1,jjb_u:jje_u,llm) ) 921 ALLOCATE(zu2(iip1,jjb_u:jje_u,llm) ) 922 ALLOCATE(zv1(iip1,jjb_v:jje_v,llm) ) 923 ALLOCATE(zv2(iip1,jjb_v:jje_v,llm) ) 924 !$OMP END MASTER 925 !$OMP BARRIER 926 ENDIF 927 928 929 930 772 931 IF (guide_plevs.EQ.0) THEN 932 !$OMP DO 773 933 DO l=1,nlevnc 774 934 DO j=jjbu,jjeu … … 783 943 if (first) then 784 944 first=.FALSE. 945 !$OMP MASTER 785 946 print*,'Guide: verification ordre niveaux verticaux' 786 947 print*,'LMDZ :' … … 815 976 enddo 816 977 endif 978 !$OMP END MASTER 817 979 endif 818 980 … … 823 985 ! .... Calcul de pls , pression au milieu des couches ,en Pascals 824 986 IF (guide_plevs.EQ.1) THEN 987 !$OMP DO 825 988 DO l=1,llm 826 989 DO j=jjbu,jjeu … … 838 1001 endif 839 1002 unskap=1./kappa 1003 !$OMP BARRIER 1004 !$OMP DO 840 1005 DO l = 1, llm 841 1006 DO j=jjbu,jjeu … … 848 1013 849 1014 ! calcul des pressions pour les grilles u et v 1015 !$OMP DO 850 1016 do l=1,llm 851 1017 do j=jjbu,jjeu … … 858 1024 CALL Register_Hallo_u(pext,llm,1,2,2,1,Req) 859 1025 CALL SendRequest(Req) 1026 !$OMP BARRIER 860 1027 CALL WaitRequest(Req) 1028 !$OMP BARRIER 861 1029 862 1030 call massbar_loc(pext, pbarx, pbary ) 1031 !$OMP BARRIER 1032 !$OMP DO 863 1033 do l=1,llm 864 1034 do j=jjbu,jjeu … … 869 1039 enddo 870 1040 enddo 1041 !$OMP DO 871 1042 do l=1,llm 872 1043 do j=jjbv,jjev … … 882 1053 ! ----------------------------------------------------------------- 883 1054 if (guide_P) then 1055 !$OMP MASTER 884 1056 do j=jjbu,jjeu 885 1057 do i=1,iim … … 891 1063 psgui2(iip1*j)=psnat2(1,j) 892 1064 enddo 1065 !$OMP END MASTER 1066 !$OMP BARRIER 893 1067 endif 894 1068 … … 896 1070 ! Calcul des nouvelles valeurs des niveaux de pression du guidage 897 1071 IF (guide_plevs.EQ.1) THEN 1072 !$OMP DO 898 1073 DO l=1,nlevnc 899 1074 DO j=jjbu,jjeu … … 905 1080 ENDDO 906 1081 ELSE IF (guide_plevs.EQ.2) THEN 1082 !$OMP DO 907 1083 DO l=1,nlevnc 908 1084 DO j=jjbu,jjeu … … 916 1092 917 1093 ! Interpolation verticale 1094 !$OMP MASTER 918 1095 CALL pres2lev(tnat1(:,jjbu:jjeu,:),zu1(:,jjbu:jjeu,:),nlevnc,llm, & 919 1096 plnc1(:,jjbu:jjeu,:),plsnc(:,jjbu:jjeu,:),iip1,jjnu,invert_p) 920 1097 CALL pres2lev(tnat2(:,jjbu:jjeu,:),zu2(:,jjbu:jjeu,:),nlevnc,llm, & 921 1098 plnc2(:,jjbu:jjeu,:),plsnc(:,jjbu:jjeu,:),iip1,jjnu,invert_p) 922 1099 !$OMP END MASTER 1100 !$OMP BARRIER 923 1101 ! Conversion en variables GCM 1102 !$OMP DO 924 1103 do l=1,llm 925 1104 do j=jjbu,jjeu … … 958 1137 ! Calcul des nouvelles valeurs des niveaux de pression du guidage 959 1138 IF (guide_plevs.EQ.1) THEN 1139 !$OMP DO 960 1140 DO l=1,nlevnc 961 1141 DO j=jjbu,jjeu … … 967 1147 ENDDO 968 1148 ELSE IF (guide_plevs.EQ.2) THEN 1149 !$OMP DO 969 1150 DO l=1,nlevnc 970 1151 DO j=jjbu,jjeu … … 978 1159 979 1160 ! Interpolation verticale 1161 !$OMP MASTER 980 1162 CALL pres2lev(qnat1(:,jjbu:jjeu,:),zu1(:,jjbu:jjeu,:),nlevnc,llm, & 981 1163 plnc1(:,jjbu:jjeu,:),plsnc(:,jjbu:jjeu,:),iip1,jjnu,invert_p) 982 1164 CALL pres2lev(qnat2(:,jjbu:jjeu,:),zu2(:,jjbu:jjeu,:),nlevnc,llm, & 983 1165 plnc2(:,jjbu:jjeu,:),plsnc(:,jjbu:jjeu,:),iip1,jjnu,invert_p) 1166 !$OMP END MASTER 1167 !$OMP BARRIER 984 1168 985 1169 ! Conversion en variables GCM 986 1170 ! On suppose qu'on a la bonne variable dans le fichier de guidage: 987 1171 ! Hum.Rel si guide_hr, Hum.Spec. sinon. 1172 !$OMP DO 988 1173 do l=1,llm 989 1174 do j=jjbu,jjeu … … 1010 1195 enddo 1011 1196 IF (guide_hr) THEN 1012 CALL q_sat(iip1*jjnu*llm,teta(:,jjbu:jjeu,:)*pk(:,jjbu:jjeu,:)/cpp, & 1013 plsnc(:,jjbu:jjeu,:),qsat(ijbu:ijeu,:)) 1014 qgui1(ijbu:ijeu,:)=qgui1(ijbu:ijeu,:)*qsat(ijbu:ijeu,:)*0.01 !hum. rel. en % 1015 qgui2(ijbu:ijeu,:)=qgui2(ijbu:ijeu,:)*qsat(ijbu:ijeu,:)*0.01 1197 !$OMP DO 1198 do l=1,llm 1199 CALL q_sat(iip1*jjnu,teta(:,jjbu:jjeu,l)*pk(:,jjbu:jjeu,l)/cpp, & 1200 plsnc(:,jjbu:jjeu,l),qsat(ijbu:ijeu,l)) 1201 qgui1(ijbu:ijeu,l)=qgui1(ijbu:ijeu,l)*qsat(ijbu:ijeu,l)*0.01 !hum. rel. en % 1202 qgui2(ijbu:ijeu,l)=qgui2(ijbu:ijeu,l)*qsat(ijbu:ijeu,l)*0.01 1203 enddo 1204 1016 1205 ENDIF 1017 1206 ENDIF … … 1020 1209 ! Calcul des nouvelles valeurs des niveaux de pression du guidage 1021 1210 IF (guide_plevs.EQ.1) THEN 1211 !$OMP DO 1022 1212 DO l=1,nlevnc 1023 1213 DO j=jjbu,jjeu … … 1033 1223 ENDDO 1034 1224 ELSE IF (guide_plevs.EQ.2) THEN 1225 !$OMP DO 1035 1226 DO l=1,nlevnc 1036 1227 DO j=jjbu,jjeu … … 1048 1239 1049 1240 ! Interpolation verticale 1241 !$OMP MASTER 1050 1242 CALL pres2lev(unat1(:,jjbu:jjeu,:),zu1(:,jjbu:jjeu,:),nlevnc,llm, & 1051 1243 plnc1(:,jjbu:jjeu,:),plunc(:,jjbu:jjeu,:),iip1,jjnu,invert_p) 1052 1244 CALL pres2lev(unat2(:,jjbu:jjeu,:),zu2(:,jjbu:jjeu,:),nlevnc,llm, & 1053 1245 plnc2(:,jjbu:jjeu,:),plunc(:,jjbu:jjeu,:),iip1,jjnu,invert_p) 1246 !$OMP END MASTER 1247 !$OMP BARRIER 1054 1248 1055 1249 ! Conversion en variables GCM 1250 !$OMP DO 1056 1251 do l=1,llm 1057 1252 do j=jjbu,jjeu … … 1085 1280 CALL Register_Hallo_u(psnat2,1,1,2,2,1,Req) 1086 1281 CALL SendRequest(Req) 1282 !$OMP BARRIER 1087 1283 CALL WaitRequest(Req) 1284 !$OMP BARRIER 1285 !$OMP DO 1088 1286 DO l=1,nlevnc 1089 1287 DO j=jjbv,jjev … … 1100 1298 CALL Register_Hallo_u(pnat2,llm,1,2,2,1,Req) 1101 1299 CALL SendRequest(Req) 1300 !$OMP BARRIER 1102 1301 CALL WaitRequest(Req) 1302 !$OMP BARRIER 1303 !$OMP DO 1103 1304 DO l=1,nlevnc 1104 1305 DO j=jjbv,jjev … … 1113 1314 ENDIF 1114 1315 ! Interpolation verticale 1316 1317 !$OMP MASTER 1115 1318 CALL pres2lev(vnat1(:,jjbv:jjev,:),zv1(:,jjbv:jjev,:),nlevnc,llm, & 1116 1319 plnc1(:,jjbv:jjev,:),plvnc(:,jjbv:jjev,:),iip1,jjnv,invert_p) 1117 1320 CALL pres2lev(vnat2(:,jjbv:jjev,:),zv2(:,jjbv:jjev,:),nlevnc,llm, & 1118 1321 plnc2(:,jjbv:jjev,:),plvnc(:,jjbv:jjev,:),iip1,jjnv,invert_p) 1322 !$OMP END MASTER 1323 !$OMP BARRIER 1119 1324 ! Conversion en variables GCM 1325 !$OMP DO 1120 1326 do l=1,llm 1121 1327 do j=jjbv,jjev … … 1135 1341 1136 1342 !======================================================================= 1137 SUBROUTINE tau2alpha(typ,pim, pjm,factt,taumin,taumax,alpha)1343 SUBROUTINE tau2alpha(typ,pim,jjb,jje,factt,taumin,taumax,alpha) 1138 1344 1139 1345 ! Calcul des constantes de rappel alpha (=1/tau) … … 1149 1355 ! input arguments : 1150 1356 INTEGER, INTENT(IN) :: typ ! u(2),v(3), ou scalaire(1) 1151 INTEGER, INTENT(IN) :: pim,pjm ! dimensions en lat, lon 1357 INTEGER, INTENT(IN) :: pim ! dimensions en lon 1358 INTEGER, INTENT(IN) :: jjb,jje ! dimensions en lat 1152 1359 REAL, INTENT(IN) :: factt ! pas de temps en fraction de jour 1153 1360 REAL, INTENT(IN) :: taumin,taumax 1154 1361 ! output arguments: 1155 REAL, DIMENSION(pim, pjm), INTENT(OUT) :: alpha1362 REAL, DIMENSION(pim,jjb:jje), INTENT(OUT) :: alpha 1156 1363 1157 1364 ! local variables: … … 1175 1382 !----------------------------------------------------------------------- 1176 1383 IF (guide_reg) THEN 1177 do j= 1,pjm1384 do j=jjb,jje 1178 1385 do i=1,pim 1179 1386 if (typ.eq.2) then … … 1271 1478 ENDIF !first 1272 1479 1273 do j= 1,pjm1480 do j=jjb,jje 1274 1481 do i=1,pim 1275 1482 if (typ.eq.1) then … … 1297 1504 enddo 1298 1505 enddo 1506 1299 1507 ENDIF ! guide_reg 1300 1508 … … 1767 1975 !======================================================================= 1768 1976 SUBROUTINE guide_out(varname,hsize,vsize,field,factt) 1769 USE parallel 1977 USE parallel_lmdz 1770 1978 IMPLICIT NONE 1771 1979 -
LMDZ5/branches/testing/libf/dyn3dmem/iniacademic_loc.F90
r1795 r1864 7 7 USE infotrac, ONLY : nqtot 8 8 USE control_mod, ONLY: day_step,planet_type 9 USE parallel 9 USE parallel_lmdz 10 10 #ifdef CPP_IOIPSL 11 11 USE IOIPSL -
LMDZ5/branches/testing/libf/dyn3dmem/initdynav_loc.F
r1669 r1864 8 8 USE IOIPSL 9 9 #endif 10 use parallel10 USE parallel_lmdz 11 11 use Write_field 12 12 use misc_mod -
LMDZ5/branches/testing/libf/dyn3dmem/initfluxsto_p.F
r1707 r1864 10 10 USE IOIPSL 11 11 #endif 12 use parallel12 USE parallel_lmdz 13 13 use Write_field 14 14 use misc_mod -
LMDZ5/branches/testing/libf/dyn3dmem/inithist_loc.F
r1669 r1864 8 8 USE IOIPSL 9 9 #endif 10 use parallel10 USE parallel_lmdz 11 11 use Write_field 12 12 use misc_mod -
LMDZ5/branches/testing/libf/dyn3dmem/integrd_loc.F
r1707 r1864 5 5 $ ( nq,vcovm1,ucovm1,tetam1,psm1,massem1, 6 6 $ dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps0,masse,phis) !,finvmaold) 7 USE parallel 7 USE parallel_lmdz 8 8 USE control_mod 9 9 USE mod_filtreg_p -
LMDZ5/branches/testing/libf/dyn3dmem/integrd_mod.F90
r1669 r1864 11 11 SUBROUTINE integrd_allocate 12 12 USE bands 13 USE allocate_field 14 USE parallel 15 USE dimensions 13 USE allocate_field_mod 14 USE parallel_lmdz 15 USE dimensions_mod 16 16 USE advect_new_mod,ONLY : advect_new_allocate 17 17 IMPLICIT NONE … … 28 28 29 29 SUBROUTINE integrd_switch_caldyn(dist) 30 USE allocate_field 30 USE allocate_field_mod 31 31 USE bands 32 USE parallel 32 USE parallel_lmdz 33 33 IMPLICIT NONE 34 34 TYPE(distrib),INTENT(IN) :: dist -
LMDZ5/branches/testing/libf/dyn3dmem/laplacien_gam_loc.F
r1669 r1864 11 11 c divgra est un argument de sortie pour le s-prog 12 12 c 13 USE parallel 13 USE parallel_lmdz 14 14 IMPLICIT NONE 15 15 c -
LMDZ5/branches/testing/libf/dyn3dmem/laplacien_loc.F
r1669 r1864 9 9 c divgra est un argument de sortie pour le s-prog 10 10 c 11 USE parallel 11 USE parallel_lmdz 12 12 USE mod_filtreg_p 13 13 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/laplacien_rot_loc.F
r1669 r1864 10 10 c rotout est un argument de sortie pour le s-prog 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 USE mod_filtreg_p 14 14 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/laplacien_rotgam_loc.F
r1669 r1864 9 9 c divgra est un argument de sortie pour le s-prog 10 10 c 11 USE parallel 11 USE parallel_lmdz 12 12 IMPLICIT NONE 13 13 c -
LMDZ5/branches/testing/libf/dyn3dmem/leapfrog_loc.F
r1795 r1864 13 13 14 14 USE misc_mod 15 USE parallel 15 USE parallel_lmdz 16 16 USE times 17 17 USE mod_hallo … … 27 27 USE mod_filtreg_p 28 28 USE write_field_loc 29 USE allocate_field 29 USE allocate_field_mod 30 30 USE call_dissip_mod, ONLY : call_dissip 31 31 USE call_calfis_mod, ONLY : call_calfis … … 307 307 #ifdef CPP_IOIPSL 308 308 if (ok_guide) then 309 !$OMP MASTER310 309 call guide_main(itau,ucov,vcov,teta,q,masse,ps) 311 !$OMP END MASTER312 310 !$OMP BARRIER 313 311 endif … … 451 449 IF (ok_start_timer) THEN 452 450 CALL InitTime 453 ! ok_start_timer=.FALSE. 454 ok_start_timer=.TRUE. 451 ok_start_timer=.FALSE. 455 452 ENDIF 456 453 c$OMP END MASTER … … 626 623 True_itau=True_itau+1 627 624 628 c$OMP MASTER629 PRINT *,"---> itau=",itau," True_itau=",True_itau630 c$OMP END MASTER631 632 625 c$OMP MASTER 633 626 IF (prt_level>9) THEN … … 1088 1081 1089 1082 IF(iflag_phys.EQ.2) THEN ! "Newtonian" case 1083 c$OMP MASTER 1084 if (FirstPhysic) then 1085 ok_start_timer=.TRUE. 1086 FirstPhysic=.false. 1087 endif 1088 c$OMP END MASTER 1089 1090 1090 1091 c Calcul academique de la physique = Rappel Newtonien + fritcion 1091 1092 c -------------------------------------------------------------- … … 1390 1391 c$OMP MASTER 1391 1392 call allgather_timer_average 1392 1393 call barrier 1393 1394 if (mpi_rank==0) then 1394 1395 … … 1426 1427 1427 1428 endif 1428 1429 CALL barrier 1429 1430 print *,'Taille du Buffer MPI (REAL*8)',MaxBufferSize 1430 1431 print *,'Taille du Buffer MPI utilise (REAL*8)',MaxBufferSize_Used -
LMDZ5/branches/testing/libf/dyn3dmem/leapfrog_mod.F90
r1669 r1864 39 39 SUBROUTINE leapfrog_allocate 40 40 USE bands 41 USE allocate_field 42 USE parallel 43 USE dimensions 41 USE allocate_field_mod 42 USE parallel_lmdz 43 USE dimensions_mod 44 44 USE infotrac 45 45 USE caldyn_mod,ONLY : caldyn_allocate … … 94 94 95 95 SUBROUTINE leapfrog_switch_caldyn(dist) 96 USE allocate_field 96 USE allocate_field_mod 97 97 USE bands 98 USE parallel 98 USE parallel_lmdz 99 99 USE caldyn_mod,ONLY : caldyn_switch_caldyn 100 100 USE integrd_mod,ONLY : integrd_switch_caldyn … … 143 143 144 144 SUBROUTINE leapfrog_switch_dissip(dist) 145 USE allocate_field 145 USE allocate_field_mod 146 146 USE bands 147 USE parallel 147 USE parallel_lmdz 148 148 USE call_dissip_mod,ONLY : call_dissip_switch_dissip 149 149 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/massbar_loc.F
r1669 r1864 13 13 c 14 14 c 15 USE parallel 15 USE parallel_lmdz 16 16 IMPLICIT NONE 17 17 c -
LMDZ5/branches/testing/libf/dyn3dmem/massbarxy_loc.F
r1669 r1864 1 1 SUBROUTINE massbarxy_loc( masse, massebxy ) 2 USE parallel 2 USE parallel_lmdz 3 3 implicit none 4 4 c ********************************************************************** -
LMDZ5/branches/testing/libf/dyn3dmem/massdair_loc.F
r1669 r1864 1 1 SUBROUTINE massdair_loc( p, masse ) 2 USE parallel 2 USE parallel_lmdz 3 3 c 4 4 c ********************************************************************* -
LMDZ5/branches/testing/libf/dyn3dmem/mod_const_mpi.F90
r1707 r1864 22 22 INCLUDE 'mpif.h' 23 23 #endif 24 24 25 INTEGER :: ierr 25 26 INTEGER :: comp_id … … 51 52 52 53 SUBROUTINE Init_mpi 54 #ifdef CPP_XIOS 55 USE wxios 56 #endif 53 57 IMPLICIT NONE 54 58 #ifdef CPP_MPI … … 70 74 COMM_LMDZ=MPI_COMM_WORLD 71 75 MPI_REAL_LMDZ=MPI_REAL8 76 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 77 ! Initialisation de XIOS 78 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 79 #ifdef CPP_XIOS 80 CALL wxios_init("LMDZ", outcom=COMM_LMDZ) 81 #endif 72 82 !$OMP END MASTER 83 #else 84 #ifdef CPP_XIOS 85 !$OMP MASTER 86 CALL wxios_init("LMDZ") 87 !$OMP END MASTER 88 #endif 73 89 #endif 74 90 -
LMDZ5/branches/testing/libf/dyn3dmem/mod_filtreg_p.F
r1707 r1864 5 5 SUBROUTINE filtreg_p ( champ,jjb,jje, ibeg, iend, nlat, nbniv, 6 6 & ifiltre, iaire, griscal ,iter) 7 USE Parallel, only : OMP_CHUNK7 USE parallel_lmdz, only : OMP_CHUNK 8 8 USE mod_filtre_fft_loc 9 9 USE timer_filtre … … 216 216 & champ_fft(1,j,1), iip1*(jje-jjb+1)) 217 217 #else 218 champ_fft(:,j,:)= 219 & matmul(matrinvn(:,:,j),champ_loc(:iim,j,:)) 218 champ_fft(:,j,1:nbniv_loc)= 219 & matmul(matrinvn(:,:,j), 220 & champ_loc(:iim,j,1:nbniv_loc)) 220 221 #endif 221 222 ENDDO … … 229 230 & champ_fft(1,j,1), iip1*(jje-jjb+1)) 230 231 #else 231 champ_fft(:,j,:)= 232 & matmul(matriceun(:,:,j),champ_loc(:iim,j,:)) 232 champ_fft(:,j,1:nbniv_loc)= 233 & matmul(matriceun(:,:,j), 234 & champ_loc(:iim,j,1:nbniv_loc)) 233 235 #endif 234 236 ENDDO … … 242 244 & champ_fft(1,j,1), iip1*(jje-jjb+1)) 243 245 #else 244 champ_fft(:,j,:)= 245 & matmul(matricevn(:,:,j),champ_loc(:iim,j,:)) 246 champ_fft(:,j,1:nbniv_loc)= 247 & matmul(matricevn(:,:,j), 248 & champ_loc(:iim,j,1:nbniv_loc)) 246 249 #endif 247 250 ENDDO … … 259 262 & champ_fft(1,j,1), iip1*(jje-jjb+1)) 260 263 #else 261 champ_fft(:,j, :)=264 champ_fft(:,j,1:nbniv_loc)= 262 265 & matmul(matrinvs(:,:,j-jfiltsu+1), 263 & champ_loc(:iim,j, :))266 & champ_loc(:iim,j,1:nbniv_loc)) 264 267 #endif 265 268 ENDDO … … 274 277 & champ_fft(1,j,1), iip1*(jje-jjb+1)) 275 278 #else 276 champ_fft(:,j, :)=279 champ_fft(:,j,1:nbniv_loc)= 277 280 & matmul(matriceus(:,:,j-jfiltsu+1), 278 & champ_loc(:iim,j, :))281 & champ_loc(:iim,j,1:nbniv_loc)) 279 282 #endif 280 283 ENDDO … … 289 292 & champ_fft(1,j,1), iip1*(jje-jjb+1)) 290 293 #else 291 champ_fft(:,j, :)=294 champ_fft(:,j,1:nbniv_loc)= 292 295 & matmul(matricevs(:,:,j-jfiltsv+1), 293 & champ_loc(:iim,j, :))296 & champ_loc(:iim,j,1:nbniv_loc)) 294 297 #endif 295 298 ENDDO … … 308 311 ll_nb = 0 309 312 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 310 DO l = 1, nbniv _loc313 DO l = 1, nbniv 311 314 ll_nb = ll_nb + 1 312 315 DO j = jdfil,jffil … … 324 327 ll_nb = 0 325 328 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 326 DO l = 1, nbniv _loc329 DO l = 1, nbniv 327 330 ll_nb = ll_nb + 1 328 331 DO j = jdfil,jffil -
LMDZ5/branches/testing/libf/dyn3dmem/mod_hallo.F90
r1669 r1864 1 1 module mod_Hallo 2 USE parallel 2 USE parallel_lmdz 3 3 implicit none 4 4 logical,save :: use_mpi_alloc 5 integer, parameter :: MaxRequest=2006 5 integer, parameter :: MaxProc=512 7 integer, parameter :: MaxBufferSize=1024*1024*100 6 integer, parameter :: DefaultMaxBufferSize=1024*1024*100 7 integer, SAVE :: MaxBufferSize=0 8 8 integer, parameter :: ListSize=1000 9 9 … … 28 28 type request_SR 29 29 integer :: NbRequest=0 30 integer :: NbRequestMax=0 30 31 integer :: BufferSize 31 32 integer :: Pos 32 33 integer :: Index 33 type(Hallo), dimension(MaxRequest) :: Hallo34 type(Hallo), POINTER :: Hallo(:) 34 35 integer :: MSG_Request 35 36 end type request_SR … … 63 64 64 65 subroutine Init_mod_hallo 65 USE dimensions 66 USE dimensions_mod 67 USE IOIPSL 66 68 implicit none 67 69 integer :: jj_nb_gather(0:mpi_size-1) … … 70 72 Buffer_Pos(Index_Pos)=1 71 73 MaxBufferSize_Used=0 72 74 !$OMP MASTER 75 MaxBufferSize=DefaultMaxBufferSize 76 CALL getin("mpi_buffer_size",MaxBufferSize) 77 !$OMP END MASTER 78 !$OMP BARRIER 79 73 80 IF (use_mpi_alloc .AND. using_mpi) THEN 74 81 CALL create_global_mpi_buffer … … 77 84 ENDIF 78 85 86 !$OMP MASTER 79 87 jj_nb_gather(:)=0 80 88 jj_nb_gather(0)=jjp1 81 89 82 90 CALL create_distrib(jj_nb_gather,distrib_gather) 91 !$OMP END MASTER 92 !$OMP BARRIER 83 93 84 94 end subroutine init_mod_hallo … … 176 186 177 187 178 subroutine Init_Hallo(Field,Stride,NbLevel,offset,size,NewHallo)188 subroutine New_Hallo(Field,Stride,NbLevel,offset,size,Ptr_request) 179 189 integer :: Stride 180 190 integer :: NbLevel … … 182 192 integer :: offset 183 193 real, dimension(Stride,NbLevel),target :: Field 184 type(Hallo) :: NewHallo 185 194 type(request_SR),pointer :: Ptr_request 195 type(Hallo),POINTER :: NewHallos(:),HalloSwitch(:), NewHallo 196 197 Ptr_Request%NbRequest=Ptr_Request%NbRequest+1 198 IF(Ptr_Request%NbRequestMax==0) THEN 199 Ptr_Request%NbRequestMax=10 200 ALLOCATE(Ptr_Request%Hallo(Ptr_Request%NbRequestMax)) 201 ELSE IF ( Ptr_Request%NbRequest > Ptr_Request%NbRequestMax) THEN 202 Ptr_Request%NbRequestMax=INT(Ptr_Request%NbRequestMax*1.2) 203 ALLOCATE(NewHallos(Ptr_Request%NbRequestMax)) 204 NewHallos(1:Ptr_Request%NbRequest-1)=Ptr_Request%hallo(1:Ptr_Request%NbRequest-1) 205 HalloSwitch=>Ptr_Request%hallo 206 Ptr_Request%hallo=>NewHallos 207 DEALLOCATE(HalloSwitch) 208 ENDIF 209 210 NewHallo=>Ptr_Request%hallo(Ptr_Request%NbRequest) 211 186 212 NewHallo%Field=>Field 187 213 NewHallo%Stride=Stride … … 190 216 NewHallo%offset=offset 191 217 192 193 end subroutine Init_Hallo 218 end subroutine New_Hallo 194 219 195 220 subroutine Register_SendField(Field,ij,ll,offset,size,target,a_request) 196 USE dimensions 221 USE dimensions_mod 197 222 implicit none 198 223 … … 204 229 205 230 Ptr_Request=>a_request%RequestSend(target) 206 Ptr_Request%NbRequest=Ptr_Request%NbRequest+1 207 if (Ptr_Request%NbRequest>=MaxRequest) then 208 print *,'STOP :: La taille de MaxRequest dans mod_hallo.F90 est trop petite !!!!' 209 stop 210 endif 211 call Init_Hallo(Field,ij,ll,offset,size,Ptr_request%Hallo(Ptr_Request%NbRequest)) 231 232 call New_Hallo(Field,ij,ll,offset,size,Ptr_request) 212 233 213 234 end subroutine Register_SendField 214 235 215 236 subroutine Register_RecvField(Field,ij,ll,offset,size,target,a_request) 216 USE dimensions 237 USE dimensions_mod 217 238 implicit none 218 239 … … 224 245 225 246 Ptr_Request=>a_request%RequestRecv(target) 226 Ptr_Request%NbRequest=Ptr_Request%NbRequest+1227 228 if (Ptr_Request%NbRequest>=MaxRequest) then229 print *,'STOP :: La taille de MaxRequest dans mod_hallo.F90 est trop petite !!!!'230 stop231 endif232 247 233 call Init_Hallo(Field,ij,ll,offset,size,Ptr_request%Hallo(Ptr_Request%NbRequest))248 call New_Hallo(Field,ij,ll,offset,size,Ptr_request) 234 249 235 250 … … 237 252 238 253 subroutine Register_SwapField(FieldS,FieldR,ij,ll,jj_Nb_New,a_request) 239 USE dimensions 254 USE dimensions_mod 240 255 implicit none 241 256 … … 285 300 286 301 subroutine Register_SwapFieldHallo(FieldS,FieldR,ij,ll,jj_Nb_New,Up,Down,a_request) 287 USE dimensions 302 USE dimensions_mod 288 303 289 304 implicit none … … 338 353 339 354 SUBROUTINE Register_SwapField1d_u(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 340 USE parallel 341 USE dimensions 355 USE parallel_lmdz 356 USE dimensions_mod 342 357 IMPLICIT NONE 343 358 … … 369 384 370 385 SUBROUTINE Register_SwapField2d_u1d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 371 USE parallel 372 USE dimensions 386 USE parallel_lmdz 387 USE dimensions_mod 373 388 IMPLICIT NONE 374 389 … … 403 418 404 419 SUBROUTINE Register_SwapField3d_u(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 405 USE parallel 406 USE dimensions 420 USE parallel_lmdz 421 USE dimensions_mod 407 422 IMPLICIT NONE 408 423 … … 438 453 439 454 SUBROUTINE Register_SwapField1d_u2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 440 USE parallel 441 USE dimensions 455 USE parallel_lmdz 456 USE dimensions_mod 442 457 443 458 IMPLICIT NONE … … 470 485 471 486 SUBROUTINE Register_SwapField2d_u2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 472 USE parallel 473 USE dimensions 487 USE parallel_lmdz 488 USE dimensions_mod 474 489 475 490 IMPLICIT NONE … … 505 520 506 521 SUBROUTINE Register_SwapField3d_u2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 507 USE parallel 508 USE dimensions 522 USE parallel_lmdz 523 USE dimensions_mod 509 524 IMPLICIT NONE 510 525 … … 544 559 545 560 SUBROUTINE Register_SwapField1d_v(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 546 USE parallel 547 USE dimensions 561 USE parallel_lmdz 562 USE dimensions_mod 548 563 IMPLICIT NONE 549 564 … … 575 590 576 591 SUBROUTINE Register_SwapField2d_v1d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 577 USE parallel 578 USE dimensions 592 USE parallel_lmdz 593 USE dimensions_mod 579 594 IMPLICIT NONE 580 595 … … 609 624 610 625 SUBROUTINE Register_SwapField3d_v(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 611 USE parallel 612 USE dimensions 626 USE parallel_lmdz 627 USE dimensions_mod 613 628 IMPLICIT NONE 614 629 … … 645 660 646 661 SUBROUTINE Register_SwapField1d_v2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 647 USE parallel 648 USE dimensions 662 USE parallel_lmdz 663 USE dimensions_mod 649 664 IMPLICIT NONE 650 665 … … 676 691 677 692 SUBROUTINE Register_SwapField2d_v2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 678 USE parallel 679 USE dimensions 693 USE parallel_lmdz 694 USE dimensions_mod 680 695 IMPLICIT NONE 681 696 … … 710 725 711 726 SUBROUTINE Register_SwapField3d_v2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 712 USE parallel 713 USE dimensions 727 USE parallel_lmdz 728 USE dimensions_mod 714 729 IMPLICIT NONE 715 730 … … 745 760 746 761 SUBROUTINE Register_SwapField_gen_u(FieldS,FieldR,ll,old_dist,new_dist,Up,Down,a_request) 747 USE parallel 748 USE dimensions 762 USE parallel_lmdz 763 USE dimensions_mod 749 764 IMPLICIT NONE 750 765 … … 787 802 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 788 803 DO l=1,ll 789 FieldR(ijb:ije, :)=FieldS(ijb:ije,:)804 FieldR(ijb:ije,l)=FieldS(ijb:ije,l) 790 805 ENDDO 791 806 !$OMP END DO NOWAIT … … 798 813 799 814 SUBROUTINE Register_SwapField_gen_v(FieldS,FieldR,ll,old_dist,new_dist,Up,Down,a_request) 800 USE parallel 801 USE dimensions 815 USE parallel_lmdz 816 USE dimensions_mod 802 817 IMPLICIT NONE 803 818 … … 858 873 859 874 subroutine Register_Hallo(Field,ij,ll,RUp,Rdown,SUp,SDown,a_request) 860 USE dimensions 875 USE dimensions_mod 861 876 implicit none 862 877 … … 925 940 926 941 subroutine Register_Hallo_u(Field,ll,RUp,Rdown,SUp,SDown,a_request) 927 USE dimensions 942 USE dimensions_mod 928 943 implicit none 929 944 #ifdef CPP_MPI … … 990 1005 991 1006 subroutine Register_Hallo_v(Field,ll,RUp,Rdown,SUp,SDown,a_request) 992 USE dimensions 1007 USE dimensions_mod 993 1008 implicit none 994 1009 #ifdef CPP_MPI … … 1055 1070 1056 1071 subroutine SendRequest(a_Request) 1057 USE dimensions 1072 USE dimensions_mod 1058 1073 implicit none 1059 1074 … … 1179 1194 1180 1195 subroutine WaitRequest(a_Request) 1181 USE dimensions 1196 USE dimensions_mod 1182 1197 implicit none 1183 1198 … … 1273 1288 1274 1289 subroutine WaitSendRequest(a_Request) 1275 USE dimensions 1290 USE dimensions_mod 1276 1291 implicit none 1277 1292 … … 1329 1344 1330 1345 subroutine WaitRecvRequest(a_Request) 1331 USE dimensions 1346 USE dimensions_mod 1332 1347 implicit none 1333 1348 … … 1410 1425 1411 1426 subroutine CopyField(FieldS,FieldR,ij,ll,jj_Nb_New) 1412 USE dimensions 1427 USE dimensions_mod 1413 1428 1414 1429 implicit none … … 1448 1463 1449 1464 subroutine CopyFieldHallo(FieldS,FieldR,ij,ll,jj_Nb_New,Up,Down) 1450 USE dimensions 1465 USE dimensions_mod 1451 1466 1452 1467 implicit none … … 1488 1503 1489 1504 subroutine Gather_field_u(field_loc,field_glo,ll) 1490 USE dimensions 1505 USE dimensions_mod 1491 1506 implicit none 1492 1507 integer :: ll … … 1511 1526 1512 1527 subroutine Gather_field_v(field_loc,field_glo,ll) 1513 USE dimensions 1528 USE dimensions_mod 1514 1529 implicit none 1515 1530 integer :: ll … … 1539 1554 1540 1555 subroutine Scatter_field_u(field_glo,field_loc,ll) 1541 USE dimensions 1556 USE dimensions_mod 1542 1557 implicit none 1543 1558 integer :: ll … … 1573 1588 1574 1589 subroutine Scatter_field_v(field_glo,field_loc,ll) 1575 USE dimensions 1590 USE dimensions_mod 1576 1591 implicit none 1577 1592 integer :: ll -
LMDZ5/branches/testing/libf/dyn3dmem/nxgrad_gam_loc.F
r1669 r1864 9 9 c x et y sont des arguments de sortie pour le s-prog 10 10 c 11 USE parallel 11 USE parallel_lmdz 12 12 13 13 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/nxgrad_loc.F
r1669 r1864 9 9 c x et y sont des arguments de sortie pour le s-prog 10 10 c 11 USE parallel 11 USE parallel_lmdz 12 12 IMPLICIT NONE 13 13 c -
LMDZ5/branches/testing/libf/dyn3dmem/nxgraro2_loc.F
r1669 r1864 13 13 c 14 14 USE write_Field_p 15 USE parallel 15 USE parallel_lmdz 16 16 USE times 17 17 USE mod_hallo … … 34 34 REAL signe, nugradrs 35 35 INTEGER l,ij,iter,lr 36 Type(Request) :: Request_dissip 36 Type(Request),SAVE :: Request_dissip 37 !$OMP THREADPRIVATE(Request_dissip) 37 38 c ........................................................ 38 39 c -
LMDZ5/branches/testing/libf/dyn3dmem/nxgraro2_mod.F90
r1669 r1864 9 9 SUBROUTINE nxgraro2_allocate 10 10 USE bands 11 USE allocate_field 12 USE parallel 13 USE dimensions 11 USE allocate_field_mod 12 USE parallel_lmdz 13 USE dimensions_mod 14 14 IMPLICIT NONE 15 15 TYPE(distrib),POINTER :: d … … 24 24 25 25 SUBROUTINE nxgraro2_switch_dissip(dist) 26 USE allocate_field 26 USE allocate_field_mod 27 27 USE bands 28 USE parallel 28 USE parallel_lmdz 29 29 IMPLICIT NONE 30 30 TYPE(distrib),INTENT(IN) :: dist -
LMDZ5/branches/testing/libf/dyn3dmem/nxgrarot_p.F
r1669 r1864 13 13 c 14 14 c 15 USE parallel 15 USE parallel_lmdz 16 16 USE times 17 17 USE write_field_p -
LMDZ5/branches/testing/libf/dyn3dmem/pression_loc.F
r1669 r1864 1 1 SUBROUTINE pression_loc( ngrid, ap, bp, ps, p ) 2 USE parallel 2 USE parallel_lmdz 3 3 c 4 4 -
LMDZ5/branches/testing/libf/dyn3dmem/qminimum_loc.F
r1669 r1864 1 1 SUBROUTINE qminimum_loc( q,nq,deltap ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT none 4 4 c -
LMDZ5/branches/testing/libf/dyn3dmem/rotat_nfil_loc.F
r1669 r1864 10 10 c rot est un argument de sortie pour le s-prog 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 IMPLICIT NONE 14 14 c -
LMDZ5/branches/testing/libf/dyn3dmem/rotat_p.F
r1669 r1864 10 10 c rot est un argument de sortie pour le s-prog 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 IMPLICIT NONE 14 14 c -
LMDZ5/branches/testing/libf/dyn3dmem/rotatf_loc.F
r1669 r1864 10 10 c rot est un argument de sortie pour le s-prog 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 USE mod_filtreg_p 14 14 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/sw_case_williamson91_6_loc.F
r1795 r1864 26 26 c 27 27 c======================================================================= 28 USE parallel 28 USE parallel_lmdz 29 29 30 30 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/times.F90
r1669 r1864 25 25 26 26 subroutine init_timer 27 use parallel27 USE parallel_lmdz 28 28 implicit none 29 29 #include "dimensions.h" … … 101 101 102 102 subroutine stop_timer(no_timer) 103 use parallel103 USE parallel_lmdz 104 104 implicit none 105 105 integer :: no_timer … … 136 136 137 137 subroutine allgather_timer 138 use parallel138 USE parallel_lmdz 139 139 implicit none 140 140 #ifdef CPP_MPI … … 171 171 172 172 subroutine allgather_timer_average 173 use parallel173 USE parallel_lmdz 174 174 implicit none 175 175 #ifdef CPP_MPI -
LMDZ5/branches/testing/libf/dyn3dmem/top_bound_loc.F
r1795 r1864 3 3 ! 4 4 SUBROUTINE top_bound_loc(vcov,ucov,teta,masse,dt) 5 USE parallel 5 USE parallel_lmdz 6 6 IMPLICIT NONE 7 7 c -
LMDZ5/branches/testing/libf/dyn3dmem/tourpot_loc.F
r1669 r1864 1 1 SUBROUTINE tourpot_loc ( vcov, ucov, massebxy, vorpot ) 2 USE parallel 2 USE parallel_lmdz 3 3 USE mod_filtreg_p 4 4 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/vitvert_loc.F
r1669 r1864 1 1 SUBROUTINE vitvert_loc ( convm , w ) 2 2 c 3 USE parallel 3 USE parallel_lmdz 4 4 IMPLICIT NONE 5 5 -
LMDZ5/branches/testing/libf/dyn3dmem/vlsplt_loc.F
r1707 r1864 13 13 c 14 14 c -------------------------------------------------------------------- 15 USE Parallel15 USE parallel_lmdz 16 16 IMPLICIT NONE 17 17 c … … 348 348 c 349 349 c -------------------------------------------------------------------- 350 USE parallel 350 USE parallel_lmdz 351 351 IMPLICIT NONE 352 352 c … … 737 737 c 738 738 c -------------------------------------------------------------------- 739 USE Parallel739 USE parallel_lmdz 740 740 USE vlz_mod 741 741 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/vlspltgen_loc.F
r1669 r1864 23 23 c pk exner au milieu des couches necessaire pour calculer Qsat 24 24 c -------------------------------------------------------------------- 25 USE parallel 25 USE parallel_lmdz 26 26 USE mod_hallo 27 27 USE Write_Field_loc … … 67 67 LOGICAL, SAVE :: firstcall=.TRUE. 68 68 !$OMP THREADPRIVATE(firstcall) 69 type(request) :: MyRequest1 70 type(request) :: MyRequest2 71 69 type(request),SAVE :: MyRequest1 70 !$OMP THREADPRIVATE(MyRequest1) 71 type(request),SAVE :: MyRequest2 72 !$OMP THREADPRIVATE(MyRequest2) 72 73 c fonction psat(T) 73 74 -
LMDZ5/branches/testing/libf/dyn3dmem/vlspltgen_mod.F90
r1669 r1864 12 12 SUBROUTINE vlspltgen_allocate 13 13 USE bands 14 USE allocate_field 15 USE parallel 14 USE allocate_field_mod 15 USE parallel_lmdz 16 16 USE infotrac 17 17 USE vlz_mod,ONLY : vlz_allocate … … 34 34 35 35 SUBROUTINE vlspltgen_switch_vanleer(dist) 36 USE allocate_field 36 USE allocate_field_mod 37 37 USE bands 38 USE parallel 38 USE parallel_lmdz 39 39 USE vlz_mod,ONLY : vlz_switch_vanleer 40 40 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dmem/vlspltqs_loc.F
r1707 r1864 8 8 c 9 9 c -------------------------------------------------------------------- 10 USE parallel 10 USE parallel_lmdz 11 11 IMPLICIT NONE 12 12 c … … 360 360 c 361 361 c -------------------------------------------------------------------- 362 USE parallel 362 USE parallel_lmdz 363 363 IMPLICIT NONE 364 364 c -
LMDZ5/branches/testing/libf/dyn3dmem/vlz_mod.F90
r1669 r1864 10 10 SUBROUTINE vlz_allocate 11 11 USE bands 12 USE allocate_field 13 USE parallel 12 USE allocate_field_mod 13 USE parallel_lmdz 14 14 USE infotrac 15 USE dimensions 15 USE dimensions_mod 16 16 IMPLICIT NONE 17 17 TYPE(distrib),POINTER :: d … … 26 26 27 27 SUBROUTINE vlz_switch_vanleer(dist) 28 USE allocate_field 28 USE allocate_field_mod 29 29 USE bands 30 USE parallel 30 USE parallel_lmdz 31 31 IMPLICIT NONE 32 32 TYPE(distrib),INTENT(IN) :: dist -
LMDZ5/branches/testing/libf/dyn3dmem/write_field_loc.F90
r1669 r1864 34 34 35 35 SUBROUTINE write_field_u_gen(name,Field,ll) 36 USE parallel 36 USE parallel_lmdz 37 37 USE write_field 38 38 USE mod_hallo … … 45 45 real, allocatable,SAVE :: New_Field(:,:,:) 46 46 integer,dimension(0:mpi_size-1) :: jj_nb_master 47 type(Request) :: Request_write 47 type(Request),SAVE :: Request_write 48 !$OMP THREADPRIVATE(Request_write) 48 49 integer :: ll,i 49 50 … … 61 62 New_Field(:,jj_begin:jj_end,i)=reshape(Field(ij_begin:ij_end,i),(/iip1,jj_nb/)) 62 63 ENDDO 63 64 !$OMP BARRIER 64 65 call Register_SwapField(new_field,new_field,ip1jmp1,ll,jj_Nb_master,Request_write) 65 66 call SendRequest(Request_write) … … 98 99 99 100 SUBROUTINE write_field_v_gen(name,Field,ll) 100 USE parallel 101 USE parallel_lmdz 101 102 USE write_field 102 103 USE mod_hallo … … 109 110 real, allocatable,SAVE :: New_Field(:,:,:) 110 111 integer,dimension(0:mpi_size-1) :: jj_nb_master 111 type(Request) :: Request_write 112 type(Request),SAVE :: Request_write 113 !$OMP THREADPRIVATE(Request_write) 112 114 integer :: ll,i,jje,ije,jjn 113 115 … … 136 138 New_Field(:,jj_begin:jje,i)=reshape(Field(ij_begin:ije,i),(/iip1,jjn/)) 137 139 ENDDO 138 140 !$OMP BARRIER 139 141 call Register_SwapField(new_field,new_field,ip1jm,ll,jj_Nb_master,Request_write) 140 142 call SendRequest(Request_write) -
LMDZ5/branches/testing/libf/dyn3dmem/write_field_p.F90
r1669 r1864 9 9 10 10 subroutine write_field1D_p(name,Field) 11 USE parallel 11 USE parallel_lmdz 12 12 USE write_field 13 13 implicit none … … 30 30 31 31 subroutine write_field2D_p(name,Field) 32 USE parallel 32 USE parallel_lmdz 33 33 USE write_field 34 34 implicit none … … 51 51 52 52 subroutine write_field3D_p(name,Field) 53 USE parallel 53 USE parallel_lmdz 54 54 USE write_field 55 55 implicit none -
LMDZ5/branches/testing/libf/dyn3dmem/writedynav_loc.F
r1669 r1864 9 9 USE ioipsl 10 10 #endif 11 USE parallel 11 USE parallel_lmdz 12 12 USE misc_mod 13 13 USE infotrac, ONLY : nqtot, ttext -
LMDZ5/branches/testing/libf/dyn3dmem/writehist_loc.F
r1669 r1864 9 9 USE ioipsl 10 10 #endif 11 USE parallel 11 USE parallel_lmdz 12 12 USE misc_mod 13 13 USE infotrac, ONLY : nqtot, ttext -
LMDZ5/branches/testing/libf/dyn3dpar/abort_gcm.F
r1795 r1864 12 12 USE ioipsl_getincom 13 13 #endif 14 USE parallel 14 USE parallel_lmdz 15 16 17 18 15 19 #include "iniprint.h" 16 20 … … 37 41 c$OMP END MASTER 38 42 #endif 43 44 45 39 46 c call histclo(2) 40 47 c call histclo(3) -
LMDZ5/branches/testing/libf/dyn3dpar/addfi_p.F
r1454 r1864 5 5 S pucov, pvcov, pteta, pq , pps , 6 6 S pdufi, pdvfi, pdhfi,pdqfi, pdpfi ) 7 USE parallel 7 USE parallel_lmdz 8 8 USE infotrac, ONLY : nqtot 9 9 USE control_mod, ONLY : planet_type -
LMDZ5/branches/testing/libf/dyn3dpar/advect_new_p.F
r774 r1864 4 4 SUBROUTINE advect_new_p(ucov,vcov,teta,w,massebx,masseby, 5 5 & du,dv,dteta) 6 USE parallel 6 USE parallel_lmdz 7 7 USE write_field_p 8 8 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dpar/advect_p.F
r774 r1864 3 3 ! 4 4 SUBROUTINE advect_p(ucov,vcov,teta,w,massebx,masseby,du,dv,dteta) 5 USE parallel 5 USE parallel_lmdz 6 6 USE write_field_p 7 7 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dpar/advtrac_p.F90
r1549 r1864 10 10 ! M.A Filiberti (04/2002) 11 11 ! 12 USE parallel 12 USE parallel_lmdz 13 13 USE Write_Field_p 14 14 USE Bands … … 460 460 461 461 CALL qminimum_p( q, 2, finmasse ) 462 endif ! of if (planet_type=="earth") 462 463 463 464 !------------------------------------------------------------------ … … 466 467 ! iadvtr=0 467 468 468 !$OMP MASTER 469 call VTe(VTadvection) 470 call stop_timer(timer_vanleer) 471 call VTb(VThallo) 472 !$OMP END MASTER 473 474 do j=1,nqtot 475 call Register_SwapFieldHallo(q(1,1,j),q(1,1,j),ip1jmp1,llm, & 476 jj_nb_caldyn,0,0,Request_vanleer) 477 enddo 478 479 call Register_SwapFieldHallo(flxw,flxw,ip1jmp1,llm, & 469 !$OMP MASTER 470 call VTe(VTadvection) 471 call stop_timer(timer_vanleer) 472 call VTb(VThallo) 473 !$OMP END MASTER 474 475 do j=1,nqtot 476 call Register_SwapFieldHallo(q(1,1,j),q(1,1,j),ip1jmp1,llm, & 480 477 jj_nb_caldyn,0,0,Request_vanleer) 481 482 call SendRequest(Request_vanleer) 483 !$OMP BARRIER 484 call WaitRequest(Request_vanleer) 485 486 !$OMP BARRIER 487 !$OMP MASTER 488 call SetDistrib(jj_nb_caldyn) 489 call VTe(VThallo) 490 call resume_timer(timer_caldyn) 478 enddo 479 480 call Register_SwapFieldHallo(flxw,flxw,ip1jmp1,llm, & 481 jj_nb_caldyn,0,0,Request_vanleer) 482 483 call SendRequest(Request_vanleer) 484 !$OMP BARRIER 485 call WaitRequest(Request_vanleer) 486 487 !$OMP BARRIER 488 !$OMP MASTER 489 call SetDistrib(jj_nb_caldyn) 490 call VTe(VThallo) 491 call resume_timer(timer_caldyn) 491 492 !$OMP END MASTER 492 493 !$OMP BARRIER 493 494 iadvtr=0 494 endif ! of if (planet_type=="earth")495 495 ENDIF ! if iadvtr.EQ.iapp_tracvl 496 496 -
LMDZ5/branches/testing/libf/dyn3dpar/bands.F90
r1665 r1864 19 19 20 20 subroutine AllocateBands 21 use parallel21 USE parallel_lmdz 22 22 implicit none 23 23 … … 33 33 34 34 subroutine Read_distrib 35 use parallel35 USE parallel_lmdz 36 36 implicit none 37 37 … … 92 92 93 93 SUBROUTINE Set_Bands 94 USE parallel 94 USE parallel_lmdz 95 95 #ifdef CPP_PHYS 96 96 ! Ehouarn: what follows is only related to // physics … … 134 134 subroutine AdjustBands_caldyn 135 135 use times 136 use parallel136 USE parallel_lmdz 137 137 implicit none 138 138 … … 199 199 subroutine AdjustBands_vanleer 200 200 use times 201 use parallel201 USE parallel_lmdz 202 202 implicit none 203 203 … … 265 265 subroutine AdjustBands_dissip 266 266 use times 267 use parallel267 USE parallel_lmdz 268 268 implicit none 269 269 … … 335 335 USE mod_phys_lmdz_para, only : klon_mpi_para_nb 336 336 #endif 337 USE parallel 337 USE parallel_lmdz 338 338 implicit none 339 339 … … 385 385 386 386 subroutine WriteBands 387 USE parallel 387 USE parallel_lmdz 388 388 implicit none 389 389 include "dimensions.h" -
LMDZ5/branches/testing/libf/dyn3dpar/bernoui_p.F
r764 r1864 1 1 SUBROUTINE bernoui_p (ngrid,nlay,pphi,pecin,pbern) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 -
LMDZ5/branches/testing/libf/dyn3dpar/bilan_dyn_p.F
r1550 r1864 13 13 USE IOIPSL 14 14 #endif 15 USE parallel 15 USE parallel_lmdz 16 16 USE mod_hallo 17 17 use misc_mod -
LMDZ5/branches/testing/libf/dyn3dpar/caladvtrac_p.F
r1454 r1864 7 7 * p ,masse, dq , teta, 8 8 * flxw, pk, iapptrac) 9 USE parallel 9 USE parallel_lmdz 10 10 USE infotrac, ONLY : nqtot 11 11 USE control_mod, ONLY : iapp_tracvl,planet_type -
LMDZ5/branches/testing/libf/dyn3dpar/caldyn_p.F
r764 r1864 10 10 $ (itau,ucov,vcov,teta,ps,masse,pk,pkf,phis , 11 11 $ phi,conser,du,dv,dteta,dp,w,pbaru,pbarv,time ) 12 USE parallel 12 USE parallel_lmdz 13 13 USE Write_Field_p 14 14 -
LMDZ5/branches/testing/libf/dyn3dpar/calfis_p.F
r1707 r1864 34 34 USE IOPHY 35 35 #endif 36 USE parallel , ONLY : omp_chunk, using_mpi36 USE parallel_lmdz, ONLY : omp_chunk, using_mpi 37 37 USE Write_Field 38 38 Use Write_field_p -
LMDZ5/branches/testing/libf/dyn3dpar/ce0l.F90
r1795 r1864 22 22 USE mod_const_mpi 23 23 USE infotrac 24 USE parallel , ONLY: finalize_parallel24 USE parallel_lmdz, ONLY: finalize_parallel 25 25 USE indice_sol_mod 26 26 -
LMDZ5/branches/testing/libf/dyn3dpar/conf_gcm.F
r1795 r1864 16 16 use mod_filtre_fft, ONLY : use_filtre_fft 17 17 use mod_hallo, ONLY : use_mpi_alloc 18 use parallel, ONLY : omp_chunk19 18 USE infotrac, ONLY : type_trac 20 19 use assert_m, only: assert … … 906 905 use_mpi_alloc=.FALSE. 907 906 CALL getin('use_mpi_alloc',use_mpi_alloc) 908 909 !Config Key = omp_chunk910 !Config Desc = taille des blocs openmp911 !Config Def = 1912 !Config Help = defini la taille des packets d'it�ration openmp913 !Config distribu�e � chaque t�che lors de l'entr�e dans une914 !Config boucle parall�lis�e915 916 omp_chunk=1917 CALL getin('omp_chunk',omp_chunk)918 907 919 908 !Config key = ok_strato … … 1004 993 write(lunout,*)' use_filtre_fft = ', use_filtre_fft 1005 994 write(lunout,*)' use_mpi_alloc = ', use_mpi_alloc 1006 write(lunout,*)' omp_chunk = ', omp_chunk1007 995 write(lunout,*)' ok_strato = ', ok_strato 1008 996 write(lunout,*)' ok_gradsfile = ', ok_gradsfile -
LMDZ5/branches/testing/libf/dyn3dpar/convflu_p.F
r764 r1864 15 15 c nbniv est le nombre de niveaux vert. de xflu et de yflu . 16 16 c 17 USE parallel 17 USE parallel_lmdz 18 18 IMPLICIT NONE 19 19 c -
LMDZ5/branches/testing/libf/dyn3dpar/convmas1_p.F
r763 r1864 1 1 SUBROUTINE convmas1_p (pbaru, pbarv, convm ) 2 2 c 3 USE parallel 3 USE parallel_lmdz 4 4 IMPLICIT NONE 5 5 -
LMDZ5/branches/testing/libf/dyn3dpar/convmas2_p.F
r763 r1864 1 1 SUBROUTINE convmas2_p ( convm ) 2 2 c 3 USE parallel 3 USE parallel_lmdz 4 4 IMPLICIT NONE 5 5 -
LMDZ5/branches/testing/libf/dyn3dpar/convmas_p.F
r764 r1864 1 1 SUBROUTINE convmas_p (pbaru, pbarv, convm ) 2 2 c 3 USE parallel 3 USE parallel_lmdz 4 4 IMPLICIT NONE 5 5 -
LMDZ5/branches/testing/libf/dyn3dpar/covcont_p.F
r764 r1864 1 1 SUBROUTINE covcont_p (klevel,ucov, vcov, ucont, vcont ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 -
LMDZ5/branches/testing/libf/dyn3dpar/covnat_p.F
r1146 r1864 3 3 ! 4 4 SUBROUTINE covnat_p(klevel,ucov, vcov, unat, vnat ) 5 USE parallel 5 USE parallel_lmdz 6 6 IMPLICIT NONE 7 7 -
LMDZ5/branches/testing/libf/dyn3dpar/dissip_p.F
r985 r1864 1 1 SUBROUTINE dissip_p( vcov,ucov,teta,p, dv,du,dh ) 2 2 c 3 USE parallel 3 USE parallel_lmdz 4 4 USE write_field_p 5 5 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dpar/diverg_gam_p.F
r764 r1864 9 9 c x et y etant des composantes covariantes ... 10 10 c ********************************************************************* 11 USE parallel 11 USE parallel_lmdz 12 12 IMPLICIT NONE 13 13 c -
LMDZ5/branches/testing/libf/dyn3dpar/diverg_p.F
r764 r1864 8 8 c x et y etant des composantes covariantes ... 9 9 c ********************************************************************* 10 USE parallel 10 USE parallel_lmdz 11 11 IMPLICIT NONE 12 12 c -
LMDZ5/branches/testing/libf/dyn3dpar/divergf_p.F
r764 r1864 8 8 c x et y etant des composantes covariantes ... 9 9 c ********************************************************************* 10 USE PARALLEL10 USE parallel_lmdz 11 11 IMPLICIT NONE 12 12 c -
LMDZ5/branches/testing/libf/dyn3dpar/divgrad2_p.F
r985 r1864 10 10 c divgra est un argument de sortie pour le s-prg 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 USE times 14 14 USE mod_hallo -
LMDZ5/branches/testing/libf/dyn3dpar/divgrad_p.F
r764 r1864 1 1 SUBROUTINE divgrad_p (klevel,h, lh, divgra_out ) 2 USE parallel 2 USE parallel_lmdz 3 3 USE times 4 4 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dpar/dteta1_p.F
r764 r1864 1 1 SUBROUTINE dteta1_p ( teta, pbaru, pbarv, dteta) 2 USE parallel 2 USE parallel_lmdz 3 3 USE write_field_p 4 4 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dpar/dudv1_p.F
r764 r1864 1 1 SUBROUTINE dudv1_p ( vorpot, pbaru, pbarv, du, dv ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 c -
LMDZ5/branches/testing/libf/dyn3dpar/dudv2_p.F
r764 r1864 1 1 SUBROUTINE dudv2_p ( teta, pkf, bern, du, dv ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 c -
LMDZ5/branches/testing/libf/dyn3dpar/dynredem_p.F
r1669 r1864 7 7 USE IOIPSL 8 8 #endif 9 USE parallel 9 USE parallel_lmdz 10 10 USE infotrac 11 11 use netcdf95, only: NF95_PUT_VAR … … 467 467 SUBROUTINE dynredem1_p(fichnom,time, 468 468 . vcov,ucov,teta,q,masse,ps) 469 USE parallel 469 USE parallel_lmdz 470 470 USE infotrac 471 471 USE control_mod -
LMDZ5/branches/testing/libf/dyn3dpar/enercin_p.F
r764 r1864 1 1 SUBROUTINE enercin_p ( vcov, ucov, vcont, ucont, ecin ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 -
LMDZ5/branches/testing/libf/dyn3dpar/exner_hyb_p.F
r1665 r1864 29 29 c 30 30 c 31 USE parallel 31 USE parallel_lmdz 32 32 IMPLICIT NONE 33 33 c -
LMDZ5/branches/testing/libf/dyn3dpar/exner_milieu_p.F
r1665 r1864 26 26 c ( voir note de Fr.Hourdin ) , 27 27 c 28 USE parallel 28 USE parallel_lmdz 29 29 IMPLICIT NONE 30 30 c -
LMDZ5/branches/testing/libf/dyn3dpar/filtreg_p.F
r1707 r1864 3 3 SUBROUTINE filtreg_p ( champ, ibeg, iend, nlat, nbniv, 4 4 & ifiltre, iaire, griscal ,iter) 5 USE Parallel, only : OMP_CHUNK5 USE parallel_lmdz, only : OMP_CHUNK 6 6 USE mod_filtre_fft 7 7 USE timer_filtre -
LMDZ5/branches/testing/libf/dyn3dpar/flumass_p.F
r764 r1864 1 1 SUBROUTINE flumass_p(massebx,masseby, vcont, ucont, pbaru, pbarv) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 -
LMDZ5/branches/testing/libf/dyn3dpar/fluxstokenc_p.F
r1454 r1864 8 8 9 9 USE IOIPSL 10 USE parallel 10 USE parallel_lmdz 11 11 USE misc_mod 12 12 USE mod_hallo -
LMDZ5/branches/testing/libf/dyn3dpar/friction_p.F
r1492 r1864 4 4 c======================================================================= 5 5 SUBROUTINE friction_p(ucov,vcov,pdt) 6 USE parallel 6 USE parallel_lmdz 7 7 USE control_mod 8 8 #ifdef CPP_IOIPSL -
LMDZ5/branches/testing/libf/dyn3dpar/gcm.F
r1795 r1864 10 10 #endif 11 11 12 12 13 USE mod_const_mpi, ONLY: init_const_mpi 13 USE parallel 14 USE parallel_lmdz 14 15 USE infotrac 15 16 USE mod_interface_dyn_phys … … 186 187 c Initialisation partie parallele 187 188 c------------------------------------ 189 188 190 CALL init_const_mpi 189 190 191 call init_parallel 191 192 call ini_getparam("out.def") … … 213 214 c$OMP END PARALLEL 214 215 #endif 216 217 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 218 ! Initialisation de XIOS 219 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 220 215 221 216 222 c----------------------------------------------------------------------- -
LMDZ5/branches/testing/libf/dyn3dpar/geopot_p.F
r630 r1864 1 1 SUBROUTINE geopot_p ( ngrid, teta, pk, pks, phis, phi ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 -
LMDZ5/branches/testing/libf/dyn3dpar/getparam.F90
r1279 r1864 18 18 CONTAINS 19 19 SUBROUTINE ini_getparam(fichier) 20 USE parallel 20 USE parallel_lmdz 21 21 ! 22 22 IMPLICIT NONE … … 28 28 29 29 SUBROUTINE fin_getparam 30 USE parallel 30 USE parallel_lmdz 31 31 ! 32 32 IMPLICIT NONE … … 37 37 38 38 SUBROUTINE getparamr(TARGET,def_val,ret_val,comment) 39 USE parallel 39 USE parallel_lmdz 40 40 ! 41 41 IMPLICIT NONE … … 63 63 64 64 SUBROUTINE getparami(TARGET,def_val,ret_val,comment) 65 USE parallel 65 USE parallel_lmdz 66 66 ! 67 67 IMPLICIT NONE … … 90 90 91 91 SUBROUTINE getparaml(TARGET,def_val,ret_val,comment) 92 USE parallel 92 USE parallel_lmdz 93 93 ! 94 94 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dpar/gr_dyn_fi_p.F
r1665 r1864 7 7 USE mod_interface_dyn_phys 8 8 USE dimphy 9 USE PARALLEL9 USE parallel_lmdz 10 10 IMPLICIT NONE 11 11 c======================================================================= -
LMDZ5/branches/testing/libf/dyn3dpar/gr_fi_dyn_p.F
r1665 r1864 7 7 USE mod_interface_dyn_phys 8 8 USE dimphy 9 use parallel9 USE parallel_lmdz 10 10 IMPLICIT NONE 11 11 c======================================================================= -
LMDZ5/branches/testing/libf/dyn3dpar/gr_u_scal_p.F
r1000 r1864 25 25 c 26 26 c======================================================================= 27 USE parallel 27 USE parallel_lmdz 28 28 IMPLICIT NONE 29 29 c----------------------------------------------------------------------- -
LMDZ5/branches/testing/libf/dyn3dpar/gr_v_scal_p.F
r985 r1864 25 25 c 26 26 c======================================================================= 27 USE parallel 27 USE parallel_lmdz 28 28 IMPLICIT NONE 29 29 c----------------------------------------------------------------------- -
LMDZ5/branches/testing/libf/dyn3dpar/grad_p.F
r764 r1864 10 10 c pgx et pgy sont des arguments de sortie pour le s-prog 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 IMPLICIT NONE 14 14 c -
LMDZ5/branches/testing/libf/dyn3dpar/gradiv2_p.F
r985 r1864 13 13 c 14 14 c 15 USE parallel 15 USE parallel_lmdz 16 16 USE times 17 17 USE Write_field_p -
LMDZ5/branches/testing/libf/dyn3dpar/gradiv_p.F
r764 r1864 14 14 c 15 15 c 16 USE parallel 16 USE parallel_lmdz 17 17 USE times 18 18 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dpar/groupe_p.F
r1707 r1864 1 1 subroutine groupe_p(pext,pbaru,pbarv,pbarum,pbarvm,wm) 2 USE parallel 2 USE parallel_lmdz 3 3 implicit none 4 4 -
LMDZ5/branches/testing/libf/dyn3dpar/groupeun_p.F
r1279 r1864 1 1 SUBROUTINE groupeun_p(jjmax,llmax,jjb,jje,q) 2 USE parallel 2 USE parallel_lmdz 3 3 USE Write_Field_p 4 4 IMPLICIT NONE … … 135 135 SUBROUTINE INIT_GROUPEUN_P(airen_tab, aires_tab) 136 136 137 USE parallel 137 USE parallel_lmdz 138 138 IMPLICIT NONE 139 139 -
LMDZ5/branches/testing/libf/dyn3dpar/guide_p_mod.F90
r1750 r1864 292 292 !======================================================================= 293 293 SUBROUTINE guide_main(itau,ucov,vcov,teta,q,masse,ps) 294 use parallel294 USE parallel_lmdz 295 295 USE control_mod 296 296 … … 653 653 !======================================================================= 654 654 SUBROUTINE guide_interp(psi,teta) 655 USE parallel 655 USE parallel_lmdz 656 656 USE mod_hallo 657 657 USE Bands … … 1636 1636 !======================================================================= 1637 1637 SUBROUTINE guide_out(varname,hsize,vsize,field,factt) 1638 USE parallel 1638 USE parallel_lmdz 1639 1639 IMPLICIT NONE 1640 1640 -
LMDZ5/branches/testing/libf/dyn3dpar/initdynav_p.F
r1279 r1864 8 8 USE IOIPSL 9 9 #endif 10 use parallel10 USE parallel_lmdz 11 11 use Write_field 12 12 use misc_mod -
LMDZ5/branches/testing/libf/dyn3dpar/initfluxsto_p.F
r1454 r1864 10 10 USE IOIPSL 11 11 #endif 12 use parallel12 USE parallel_lmdz 13 13 use Write_field 14 14 use misc_mod -
LMDZ5/branches/testing/libf/dyn3dpar/inithist_p.F
r1279 r1864 9 9 USE IOIPSL 10 10 #endif 11 use parallel11 USE parallel_lmdz 12 12 use Write_field 13 13 use misc_mod -
LMDZ5/branches/testing/libf/dyn3dpar/integrd_p.F
r1665 r1864 5 5 $ ( nq,vcovm1,ucovm1,tetam1,psm1,massem1, 6 6 $ dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps0,masse,phis) !,finvmaold) 7 USE parallel 7 USE parallel_lmdz 8 8 USE control_mod, only : planet_type 9 9 IMPLICIT NONE -
LMDZ5/branches/testing/libf/dyn3dpar/laplacien_gam_p.F
r764 r1864 11 11 c divgra est un argument de sortie pour le s-prog 12 12 c 13 USE parallel 13 USE parallel_lmdz 14 14 IMPLICIT NONE 15 15 c -
LMDZ5/branches/testing/libf/dyn3dpar/laplacien_p.F
r764 r1864 9 9 c divgra est un argument de sortie pour le s-prog 10 10 c 11 USE parallel 11 USE parallel_lmdz 12 12 IMPLICIT NONE 13 13 c -
LMDZ5/branches/testing/libf/dyn3dpar/laplacien_rot_p.F
r764 r1864 10 10 c rotout est un argument de sortie pour le s-prog 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 IMPLICIT NONE 14 14 c -
LMDZ5/branches/testing/libf/dyn3dpar/laplacien_rotgam_p.F
r764 r1864 9 9 c divgra est un argument de sortie pour le s-prog 10 10 c 11 USE parallel 11 USE parallel_lmdz 12 12 IMPLICIT NONE 13 13 c -
LMDZ5/branches/testing/libf/dyn3dpar/leapfrog_p.F
r1795 r1864 9 9 10 10 USE misc_mod 11 USE parallel 11 USE parallel_lmdz 12 12 USE times 13 13 USE mod_hallo … … 994 994 ! Academic case : Simple friction and Newtonan relaxation 995 995 ! ------------------------------------------------------- 996 c$OMP MASTER 997 if (FirstPhysic) then 998 ok_start_timer=.TRUE. 999 FirstPhysic=.false. 1000 endif 1001 c$OMP END MASTER 1002 996 1003 ijb=ij_begin 997 1004 ije=ij_end -
LMDZ5/branches/testing/libf/dyn3dpar/massbar_p.F
r764 r1864 13 13 c 14 14 c 15 USE parallel 15 USE parallel_lmdz 16 16 IMPLICIT NONE 17 17 c -
LMDZ5/branches/testing/libf/dyn3dpar/massbarxy_p.F
r764 r1864 1 1 SUBROUTINE massbarxy_p( masse, massebxy ) 2 USE parallel 2 USE parallel_lmdz 3 3 implicit none 4 4 c ********************************************************************** -
LMDZ5/branches/testing/libf/dyn3dpar/massdair_p.F
r764 r1864 1 1 SUBROUTINE massdair_p( p, masse ) 2 USE parallel 2 USE parallel_lmdz 3 3 c 4 4 c ********************************************************************* -
LMDZ5/branches/testing/libf/dyn3dpar/mod_const_mpi.F90
r1707 r1864 51 51 52 52 SUBROUTINE Init_mpi 53 #ifdef CPP_XIOS 54 USE wxios 55 #endif 53 56 IMPLICIT NONE 54 57 #ifdef CPP_MPI … … 70 73 COMM_LMDZ=MPI_COMM_WORLD 71 74 MPI_REAL_LMDZ=MPI_REAL8 75 76 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 77 ! Initialisation de XIOS 78 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 79 #ifdef CPP_XIOS 80 CALL wxios_init("LMDZ", outcom=COMM_LMDZ) 81 #endif 82 !$OMP END MASTER 83 #else 84 #ifdef CPP_XIOS 85 !$OMP MASTER 86 CALL wxios_init("LMDZ") 72 87 !$OMP END MASTER 73 88 #endif 74 89 #endif 75 90 END SUBROUTINE Init_mpi 76 91 -
LMDZ5/branches/testing/libf/dyn3dpar/mod_hallo.F90
r1000 r1864 1 1 module mod_Hallo 2 USE parallel 2 USE parallel_lmdz 3 3 implicit none 4 4 logical,save :: use_mpi_alloc -
LMDZ5/branches/testing/libf/dyn3dpar/nxgrad_gam_p.F
r764 r1864 9 9 c x et y sont des arguments de sortie pour le s-prog 10 10 c 11 USE parallel 11 USE parallel_lmdz 12 12 IMPLICIT NONE 13 13 c -
LMDZ5/branches/testing/libf/dyn3dpar/nxgrad_p.F
r764 r1864 9 9 c x et y sont des arguments de sortie pour le s-prog 10 10 c 11 USE parallel 11 USE parallel_lmdz 12 12 IMPLICIT NONE 13 13 c -
LMDZ5/branches/testing/libf/dyn3dpar/nxgraro2_p.F
r985 r1864 13 13 c 14 14 USE write_Field_p 15 USE parallel 15 USE parallel_lmdz 16 16 USE times 17 17 USE mod_hallo -
LMDZ5/branches/testing/libf/dyn3dpar/nxgrarot_p.F
r764 r1864 13 13 c 14 14 c 15 USE parallel 15 USE parallel_lmdz 16 16 USE times 17 17 USE write_field_p -
LMDZ5/branches/testing/libf/dyn3dpar/pression_p.F
r764 r1864 1 1 SUBROUTINE pression_p( ngrid, ap, bp, ps, p ) 2 USE parallel 2 USE parallel_lmdz 3 3 c 4 4 -
LMDZ5/branches/testing/libf/dyn3dpar/qminimum_p.F
r1146 r1864 1 1 SUBROUTINE qminimum_p( q,nq,deltap ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT none 4 4 c -
LMDZ5/branches/testing/libf/dyn3dpar/rotat_nfil_p.F
r764 r1864 10 10 c rot est un argument de sortie pour le s-prog 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 IMPLICIT NONE 14 14 c -
LMDZ5/branches/testing/libf/dyn3dpar/rotat_p.F
r764 r1864 10 10 c rot est un argument de sortie pour le s-prog 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 IMPLICIT NONE 14 14 c -
LMDZ5/branches/testing/libf/dyn3dpar/rotatf_p.F
r764 r1864 10 10 c rot est un argument de sortie pour le s-prog 11 11 c 12 USE parallel 12 USE parallel_lmdz 13 13 IMPLICIT NONE 14 14 c -
LMDZ5/branches/testing/libf/dyn3dpar/times.F90
r1146 r1864 25 25 26 26 subroutine init_timer 27 use parallel27 USE parallel_lmdz 28 28 implicit none 29 29 #include "dimensions.h" … … 101 101 102 102 subroutine stop_timer(no_timer) 103 use parallel103 USE parallel_lmdz 104 104 implicit none 105 105 integer :: no_timer … … 136 136 137 137 subroutine allgather_timer 138 use parallel138 USE parallel_lmdz 139 139 implicit none 140 140 #ifdef CPP_MPI … … 171 171 172 172 subroutine allgather_timer_average 173 use parallel173 USE parallel_lmdz 174 174 implicit none 175 175 #ifdef CPP_MPI -
LMDZ5/branches/testing/libf/dyn3dpar/top_bound_p.F
r1795 r1864 3 3 ! 4 4 SUBROUTINE top_bound_p(vcov,ucov,teta,masse,dt) 5 USE parallel 5 USE parallel_lmdz 6 6 IMPLICIT NONE 7 7 c -
LMDZ5/branches/testing/libf/dyn3dpar/tourpot_p.F
r764 r1864 1 1 SUBROUTINE tourpot_p ( vcov, ucov, massebxy, vorpot ) 2 USE parallel 2 USE parallel_lmdz 3 3 IMPLICIT NONE 4 4 -
LMDZ5/branches/testing/libf/dyn3dpar/vitvert_p.F
r764 r1864 1 1 SUBROUTINE vitvert_p ( convm , w ) 2 2 c 3 USE parallel 3 USE parallel_lmdz 4 4 IMPLICIT NONE 5 5 -
LMDZ5/branches/testing/libf/dyn3dpar/vlsplt_p.F
r1520 r1864 18 18 c 19 19 c -------------------------------------------------------------------- 20 USE parallel 20 USE parallel_lmdz 21 21 USE mod_hallo 22 22 USE Vampir … … 203 203 c 204 204 c -------------------------------------------------------------------- 205 USE Parallel205 USE parallel_lmdz 206 206 IMPLICIT NONE 207 207 c … … 538 538 c 539 539 c -------------------------------------------------------------------- 540 USE parallel 540 USE parallel_lmdz 541 541 IMPLICIT NONE 542 542 c … … 927 927 c 928 928 c -------------------------------------------------------------------- 929 USE Parallel929 USE parallel_lmdz 930 930 IMPLICIT NONE 931 931 c -
LMDZ5/branches/testing/libf/dyn3dpar/vlspltgen_p.F
r1146 r1864 22 22 c pk exner au milieu des couches necessaire pour calculer Qsat 23 23 c -------------------------------------------------------------------- 24 USE parallel 24 USE parallel_lmdz 25 25 USE mod_hallo 26 26 USE Write_Field_p -
LMDZ5/branches/testing/libf/dyn3dpar/vlspltqs_p.F
r1520 r1864 22 22 c pk exner au milieu des couches necessaire pour calculer Qsat 23 23 c -------------------------------------------------------------------- 24 USE parallel 24 USE parallel_lmdz 25 25 USE mod_hallo 26 26 USE VAMPIR … … 231 231 c 232 232 c -------------------------------------------------------------------- 233 USE parallel 233 USE parallel_lmdz 234 234 IMPLICIT NONE 235 235 c … … 583 583 c 584 584 c -------------------------------------------------------------------- 585 USE parallel 585 USE parallel_lmdz 586 586 IMPLICIT NONE 587 587 c -
LMDZ5/branches/testing/libf/dyn3dpar/write_field_p.F90
r763 r1864 9 9 10 10 subroutine write_field1D_p(name,Field) 11 USE parallel 11 USE parallel_lmdz 12 12 USE write_field 13 13 implicit none … … 30 30 31 31 subroutine write_field2D_p(name,Field) 32 USE parallel 32 USE parallel_lmdz 33 33 USE write_field 34 34 implicit none … … 51 51 52 52 subroutine write_field3D_p(name,Field) 53 USE parallel 53 USE parallel_lmdz 54 54 USE write_field 55 55 implicit none -
LMDZ5/branches/testing/libf/dyn3dpar/writedynav_p.F
r1279 r1864 9 9 USE ioipsl 10 10 #endif 11 USE parallel 11 USE parallel_lmdz 12 12 USE misc_mod 13 13 USE infotrac -
LMDZ5/branches/testing/libf/dyn3dpar/writehist_p.F
r1279 r1864 9 9 USE ioipsl 10 10 #endif 11 USE parallel 11 USE parallel_lmdz 12 12 USE misc_mod 13 13 USE infotrac -
LMDZ5/branches/testing/libf/filtrez/filtreg_mod.F90
r1707 r1864 10 10 11 11 SUBROUTINE inifilr 12 #ifdef CPP_PARA 12 13 USE mod_filtre_fft, ONLY : use_filtre_fft,Init_filtre_fft 13 14 USE mod_filtre_fft_loc, ONLY : Init_filtre_fft_loc=>Init_filtre_fft ! 15 #endif 14 16 ! ... H. Upadhyaya, O.Sharma ... 15 17 ! … … 538 540 ENDDO ! of DO j = jfiltsu, jjm 539 541 542 #ifdef CPP_PARA 540 543 IF (use_filtre_fft) THEN 541 544 CALL Init_filtre_fft(coefilu,modfrstu,jfiltnu,jfiltsu, & … … 544 547 coefilv,modfrstv,jfiltnv,jfiltsv) 545 548 ENDIF 546 549 #endif 547 550 ! ................................................................... 548 551 -
LMDZ5/branches/testing/libf/filtrez/mod_filtre_fft.F90
r1403 r1864 118 118 USE mod_fft 119 119 #ifdef CPP_PARA 120 USE parallel ,ONLY : OMP_CHUNK120 USE parallel_lmdz,ONLY : OMP_CHUNK 121 121 #endif 122 122 IMPLICIT NONE … … 179 179 USE mod_fft 180 180 #ifdef CPP_PARA 181 USE parallel ,ONLY : OMP_CHUNK181 USE parallel_lmdz,ONLY : OMP_CHUNK 182 182 #endif 183 183 IMPLICIT NONE … … 241 241 USE mod_fft 242 242 #ifdef CPP_PARA 243 USE parallel ,ONLY : OMP_CHUNK243 USE parallel_lmdz,ONLY : OMP_CHUNK 244 244 #endif 245 245 IMPLICIT NONE -
LMDZ5/branches/testing/libf/filtrez/mod_filtre_fft_loc.F90
r1707 r1864 107 107 USE mod_fft 108 108 #ifdef CPP_PARA 109 USE parallel ,ONLY : OMP_CHUNK109 USE parallel_lmdz,ONLY : OMP_CHUNK 110 110 #endif 111 111 IMPLICIT NONE … … 187 187 USE mod_fft 188 188 #ifdef CPP_PARA 189 USE parallel ,ONLY : OMP_CHUNK189 USE parallel_lmdz,ONLY : OMP_CHUNK 190 190 #endif 191 191 IMPLICIT NONE … … 250 250 USE mod_fft 251 251 #ifdef CPP_PARA 252 USE parallel ,ONLY : OMP_CHUNK252 USE parallel_lmdz,ONLY : OMP_CHUNK 253 253 #endif 254 254 IMPLICIT NONE -
LMDZ5/branches/testing/libf/phy1d/lmdz1d.F
r1795 r1864 632 632 zval=0. 633 633 zthe=0. 634 ema_work1=0. 635 ema_work2=0. 634 sig1=0. 635 w01=0. 636 u_ancien(1,:)=u(:) 637 v_ancien(1,:)=v(:) 636 638 637 639 !------------------------------------------------------------------------ … … 645 647 ! agesno(:,nsrf),zmea,zstd,zsig,zgam,zthe,zpic,zval,rugoro 646 648 ! t_ancien,q_ancien,frugs(:,is_oce),clwcon(:,1),rnebcon(:,1),ratqs(:,1) 647 ! run_off_lic_0,pbl_tke(:,1:klev,nsrf),zmax0,f0, ema_work1,ema_work2649 ! run_off_lic_0,pbl_tke(:,1:klev,nsrf),zmax0,f0,sig1,w01 648 650 ! wake_deltat,wake_deltaq,wake_s,wake_cstar,wake_fip 649 651 !------------------------------------------------------------------------ -
LMDZ5/branches/testing/libf/phydev/physiq.F90
r1795 r1864 19 19 USE mod_phys_lmdz_para, only : jj_nb 20 20 USE phys_state_var_mod, only : phys_state_var_init 21 22 #ifdef CPP_XIOS 23 USE wxios 24 #endif 21 25 22 26 IMPLICIT none … … 101 105 dtime=pdtphys 102 106 call histbeg_phy("histins.nc",itau0,zjulian,dtime,nhori,nid_hist) 107 108 109 103 110 !$OMP MASTER 111 112 113 104 114 ! define vertical coordinate 105 115 call histvert(nid_hist,"presnivs","Vertical levels","Pa",klev, & … … 120 130 ! end definition sequence 121 131 call histend(nid_hist) 132 133 !XIOS 134 #ifdef CPP_XIOS 135 ! Déclaration de l'axe vertical du fichier: 136 !CALL wxios_add_vaxis("presnivs", "histins", klev, presnivs) 137 138 !Déclaration du pas de temps: 139 !CALL wxios_set_timestep(dtime) 140 141 !Finalisation du contexte: 142 !CALL wxios_closedef() 143 #endif 122 144 !$OMP END MASTER 123 145 endif ! of if (debut) … … 154 176 endif 155 177 178 !XIOS 179 #ifdef CPP_XIOS 180 !$OMP MASTER 181 !On incrémente le pas de temps XIOS 182 !CALL wxios_update_calendar(itau) 183 184 !Et on écrit, avec la routine histwrite dédiée: 185 !CALL histwrite_phy("temperature",t) 186 !CALL histwrite_phy("u",u) 187 !CALL histwrite_phy("v",v) 188 !CALL histwrite_phy("ps",paprs(:,1)) 189 !$OMP END MASTER 190 #endif 191 156 192 ! if lastcall, then it is time to write "restartphy.nc" file 157 193 if (lafin) then -
LMDZ5/branches/testing/libf/phylmd/clesphys.h
r1795 r1864 61 61 REAL pasphys 62 62 LOGICAL ok_histNMC(3) 63 INTEGER levout_histNMC(3) 63 64 REAL freq_outNMC(3) , freq_calNMC(3) 64 65 CHARACTER(len=4) type_run … … 73 74 REAL freq_COSP 74 75 LOGICAL :: ok_cosp,ok_mensuelCOSP,ok_journeCOSP,ok_hfCOSP 75 INTEGER :: ip_ebil_phy, iflag_rrtm 76 INTEGER :: ip_ebil_phy, iflag_rrtm, iflag_ice_thermo 76 77 LOGICAL :: ok_strato 77 78 LOGICAL :: ok_hines … … 91 92 & , f_cdrag_ter,f_cdrag_oce,f_rugoro & 92 93 & , lev_histhf, lev_histday, lev_histmth & 93 & , lev_histins, lev_histLES, lev_histdayNMC 94 & , lev_histins, lev_histLES, lev_histdayNMC, levout_histNMC & 94 95 & , pasphys, ok_histNMC, freq_outNMC, freq_calNMC & 95 96 & , type_run, ok_isccp, ok_regdyn, ok_cosp & … … 101 102 & , ok_lic_melt, cvl_corr, aer_type & 102 103 & , qsol0, iflag_rrtm, ok_strato,ok_hines,ecrit_LES & 103 & , co2_ppm0 104 & , co2_ppm0, iflag_ice_thermo 104 105 105 106 save /clesphys/ -
LMDZ5/branches/testing/libf/phylmd/concvl.F
r1795 r1864 1 SUBROUTINE concvl (iflag_c on,iflag_clos,1 SUBROUTINE concvl (iflag_clos, 2 2 . dtime,paprs,pplay, 3 3 . t,q,t_wake,q_wake,s_wake,u,v,tra,ntra, 4 . ALE,ALP, work1,work2,4 . ALE,ALP,sig1,w01, 5 5 . d_t,d_q,d_u,d_v,d_tra, 6 6 . rain, snow, kbas, ktop, sigd, … … 70 70 c====================================================================== 71 71 c 72 73 #include "clesphys.h" 72 74 #include "dimensions.h" 73 75 c 74 INTEGER iflag_c on,iflag_clos76 INTEGER iflag_clos 75 77 c 76 78 REAL dtime, paprs(klon,klev+1),pplay(klon,klev) … … 80 82 REAL tra(klon,klev,nbtr) 81 83 INTEGER ntra 82 REAL work1(klon,klev),work2(klon,klev),ptop2(klon)84 REAL sig1(klon,klev),w01(klon,klev),ptop2(klon) 83 85 REAL pmflxr(klon,klev+1),pmflxs(klon,klev+1) 84 86 REAL ALE(klon),ALP(klon) … … 354 356 if (iflag_con.eq.30) then 355 357 356 print *, '-> cv_driver' !jyg358 ! print *, '-> cv_driver' !jyg 357 359 CALL cv_driver(klon,klev,klevp1,ntra,iflag_con, 358 360 : t,q,qs,u,v,tra, 359 361 $ em_p,em_ph,iflag, 360 362 $ d_t,d_q,d_u,d_v,d_tra,rain, 361 $ Vprecip,cbmf, work1,work2, !jyg363 $ Vprecip,cbmf,sig1,w01, !jyg 362 364 $ kbas,ktop, 363 365 $ dtime,Ma,upwd,dnwd,dnwdbis,qcondc,wd,cape, … … 365 367 $ evap,ep,epmlmMm,eplaMm, !RomP 366 368 $ wdtrainA,wdtrainM) !RomP 367 print *, 'cv_driver ->' !jyg369 ! print *, 'cv_driver ->' !jyg 368 370 c 369 371 DO i = 1,klon … … 376 378 nloc=klon 377 379 CALL cva_driver(klon,klev,klev+1,ntra,nloc, 378 $ iflag_con,iflag_mix,iflag_clos,dtime, 380 $ iflag_con,iflag_mix,iflag_ice_thermo, 381 $ iflag_clos,dtime, 379 382 : t,q,qs,t_wake,q_wake,qs_wake,s_wake,u,v,tra, 380 383 $ em_p,em_ph, … … 382 385 . em_sig1feed,em_sig2feed,em_wght, 383 386 . iflag,d_t,d_q,d_u,d_v,d_tra,rain,kbas,ktop, 384 $ cbmf,plcl,plfc,wbeff, work1,work2,ptop2,sigd,387 $ cbmf,plcl,plfc,wbeff,sig1,w01,ptop2,sigd, 385 388 $ Ma,mip,Vprecip,upwd,dnwd,dnwdbis,qcondc,wd, 386 389 $ cape,cin,tvp, -
LMDZ5/branches/testing/libf/phylmd/conf_phys_m.F90
r1795 r1864 141 141 LOGICAL,SAVE :: reevap_ice_omp 142 142 INTEGER,SAVE :: iflag_pdf_omp 143 INTEGER,SAVE :: iflag_ice_thermo_omp 143 144 REAL,SAVE :: rad_froid_omp, rad_chau1_omp, rad_chau2_omp 144 145 REAL,SAVE :: t_glace_min_omp, t_glace_max_omp … … 155 156 Integer, save :: lev_histins_omp, lev_histLES_omp 156 157 INTEGER, SAVE :: lev_histdayNMC_omp 158 INTEGER, SAVE :: levout_histNMC_omp(3) 157 159 LOGICAL, SAVE :: ok_histNMC_omp(3) 158 160 REAL, SAVE :: freq_outNMC_omp(3), freq_calNMC_omp(3) … … 966 968 call getin('t_glace_max',t_glace_max_omp) 967 969 970 ! 971 !Config Key = iflag_ice_thermo 972 !Config Desc = 973 !Config Def = 0 974 !Config Help = 975 ! 976 iflag_ice_thermo_omp = 0 977 call getin('iflag_ice_thermo',iflag_ice_thermo_omp) 978 968 979 !Config Key = rei_min 969 980 !Config Desc = … … 1267 1278 lev_histLES_omp = 1 1268 1279 call getin('lev_histLES',lev_histLES_omp) 1269 ! 1280 ! 1270 1281 !Config Key = lev_histdayNMC 1271 1282 !Config Desc = … … 1275 1286 lev_histdayNMC_omp = 8 1276 1287 call getin('lev_histdayNMC',lev_histdayNMC_omp) 1288 ! 1289 !Config Key = levout_histNMC 1290 !Config Desc = 1291 !Config Def = 5 1292 !Config Help = 1293 ! 1294 levout_histNMC_omp(1) = 5 1295 levout_histNMC_omp(2) = 5 1296 levout_histNMC_omp(3) = 5 1297 call getin('levout_histNMC',levout_histNMC_omp) 1277 1298 ! 1278 1299 !histNMC BEG … … 1296 1317 !Config Help = 1297 1318 ! 1298 ! freq_outNMC_omp(1) = 2592000.1299 1319 freq_outNMC_omp(1) = mth_len*86400. 1300 1320 freq_outNMC_omp(2) = 86400. … … 1684 1704 t_glace_min = t_glace_min_omp 1685 1705 t_glace_max = t_glace_max_omp 1706 iflag_ice_thermo = iflag_ice_thermo_omp 1686 1707 rei_min = rei_min_omp 1687 1708 rei_max = rei_max_omp … … 1702 1723 lev_histLES = lev_histLES_omp 1703 1724 lev_histdayNMC = lev_histdayNMC_omp 1725 levout_histNMC = levout_histNMC_omp 1704 1726 ok_histNMC(:) = ok_histNMC_omp(:) 1705 1727 freq_outNMC(:) = freq_outNMC_omp(:) … … 1900 1922 write(lunout,*)' t_glace_min = ',t_glace_min 1901 1923 write(lunout,*)' t_glace_max = ',t_glace_max 1924 write(lunout,*)' iflag_ice_thermo = ',iflag_ice_thermo 1902 1925 write(lunout,*)' rei_min = ',rei_min 1903 1926 write(lunout,*)' rei_max = ',rei_max … … 1925 1948 write(lunout,*)' lev_histLES = ',lev_histLES 1926 1949 write(lunout,*)' lev_histdayNMC = ',lev_histdayNMC 1950 write(lunout,*)' levout_histNMC = ',levout_histNMC 1927 1951 write(lunout,*)' ok_histNMC = ',ok_histNMC 1928 1952 write(lunout,*)' freq_outNMC = ',freq_outNMC -
LMDZ5/branches/testing/libf/phylmd/cv3_routines.F
r1795 r1864 143 143 144 144 SUBROUTINE cv3_prelim(len,nd,ndp1,t,q,p,ph 145 : ,lv, cpn,tv,gz,h,hm,th)145 : ,lv,lf,cpn,tv,gz,h,hm,th) 146 146 implicit none 147 147 … … 157 157 158 158 c outputs: 159 real lv(len,nd), cpn(len,nd), tv(len,nd)159 real lv(len,nd), lf(len,nd), cpn(len,nd), tv(len,nd) 160 160 real gz(len,nd), h(len,nd), hm(len,nd) 161 161 real th(len,nd) … … 178 178 cdebug lv(i,k)= lv0-clmcpv*(t(i,k)-t0) 179 179 lv(i,k)= lv0-clmcpv*(t(i,k)-273.15) 180 lf(i,k)= lf0-clmci*(t(i,k)-273.15) 180 181 cpn(i,k)=cpd*(1.0-q(i,k))+cpv*q(i,k) 181 182 cpx(i,k)=cpd*(1.0-q(i,k))+cl*q(i,k) … … 918 919 end 919 920 921 SUBROUTINE Icefrac(t,clw,qi,nl,len) 922 implicit none 923 924 925 cJAM-------------------------------------------------------------------- 926 C Calcul de la quantité d'eau sous forme de glace 927 C-------------------------------------------------------------------- 928 Real qi(len,nl) 929 Real t(len,nl), clw(len,nl) 930 Real fracg 931 Integer nl, len, k, i 932 933 do k=3, nl 934 do i = 1, len 935 if (t(i,k).gt.263.15) then 936 qi(i,k)=0. 937 else 938 if (t(i,k).lt.243.15) then 939 qi(i,k)=clw(i,k) 940 else 941 fracg=(263.15-t(i,k))/20 942 qi(i,k)=clw(i,k)*fracg 943 endif 944 endif 945 C print*,t(i,k),qi(i,k),'temp,testglace' 946 enddo 947 enddo 948 949 return 950 951 end 952 920 953 SUBROUTINE cv3_undilute2(nloc,ncum,nd,icb,icbs,nk 921 954 : ,tnk,qnk,gznk,hnk,t,q,qs,gz 922 : ,p,h,tv,lv, pbase,buoybase,plcl923 o ,inb,tp,tvp,clw,hp,ep,sigp,buoy )955 : ,p,h,tv,lv,lf,pbase,buoybase,plcl 956 o ,inb,tp,tvp,clw,hp,ep,sigp,buoy,frac) 924 957 implicit none 925 958 … … 945 978 #include "cv3param.h" 946 979 #include "conema3.h" 980 #include "cvflag.h" 947 981 948 982 c inputs: 949 integer ncum, nd, nloc 983 integer ncum, nd, nloc, j 950 984 integer icb(nloc), icbs(nloc), nk(nloc) 951 985 real t(nloc,nd), q(nloc,nd), qs(nloc,nd), gz(nloc,nd) … … 953 987 real tnk(nloc), qnk(nloc), gznk(nloc) 954 988 real hnk(nloc) 955 real lv(nloc,nd), tv(nloc,nd), h(nloc,nd)989 real lv(nloc,nd), lf(nloc,nd), tv(nloc,nd), h(nloc,nd) 956 990 real pbase(nloc), buoybase(nloc), plcl(nloc) 957 991 … … 964 998 c local variables: 965 999 integer i, k 966 real tg,qg,ahg,alv,s,tc,es,denom,rg,tca,elacrit 967 real by, defrac, pden 1000 real tg,qg,ahg,alv,alf,s,tc,es,esi,denom,rg,tca,elacrit 1001 real als 1002 real qsat_new,snew, qi(nloc,nd) 1003 real by, defrac, pden, tbis 968 1004 real ah0(nloc), cape(nloc), capem(nloc), byp(nloc) 1005 real frac(nloc,nd) 969 1006 logical lcape(nloc) 970 1007 integer iposit(nloc) 1008 Real fracg 971 1009 972 1010 !===================================================================== … … 978 1016 ep(i,k)=0.0 979 1017 sigp(i,k)=spfac 1018 qi(i,k)=0. 980 1019 160 continue 981 1020 170 continue … … 1060 1099 1061 1100 c convect3: no approximation: 1062 tp(i,k)=(ah0(i)-gz(i,k)-alv*qg)/(cpd+(cl-cpd)*qnk(i)) 1063 1101 if (cvflag_ice) then 1102 tp(i,k)=Max(0.,(ah0(i)-gz(i,k)-alv*qg) 1103 & /(cpd+(cl-cpd)*qnk(i))) 1104 else 1105 tp(i,k)=(ah0(i)-gz(i,k)-alv*qg)/(cpd+(cl-cpd)*qnk(i)) 1106 endif 1107 c 1064 1108 clw(i,k)=qnk(i)-qg 1065 1109 clw(i,k)=max(0.0,clw(i,k)) … … 1068 1112 c convect3: (qg utilise au lieu du vrai mixing ratio rg): 1069 1113 tvp(i,k)=tp(i,k)*(1.+qg/eps-qnk(i)) ! whole thing 1114 if (cvflag_ice) then 1115 if(clw(i,k).lt.1.e-11) then 1116 tp(i,k)=tv(i,k) 1117 tvp(i,k)=tv(i,k) 1118 endif 1119 endif 1070 1120 endif 1121 1122 if (cvflag_ice) then 1123 cCR:attention boucle en klon dans Icefrac 1124 c Call Icefrac(t,clw,qi,nl,nloc) 1125 if (t(i,k).gt.263.15) then 1126 qi(i,k)=0. 1127 else 1128 if (t(i,k).lt.243.15) then 1129 qi(i,k)=clw(i,k) 1130 else 1131 fracg=(263.15-t(i,k))/20 1132 qi(i,k)=clw(i,k)*fracg 1133 endif 1134 endif 1135 cCR: fin test 1136 if(t(i,k).lt.263.15) then 1137 cCR: on commente les calculs d'Arnaud car division par zero 1138 cnouveau calcul propose par JYG 1139 c alv=lv0-clmcpv*(t(i,k)-273.15) 1140 c alf=lf0-clmci*(t(i,k)-273.15) 1141 c tg=tp(i,k) 1142 c tc=tp(i,k)-273.15 1143 c denom=243.5+tc 1144 c do j=1,3 1145 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 1146 c il faudra que esi vienne en argument de la convection 1147 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 1148 c tbis=t(i,k)+(tp(i,k)-tg) 1149 c esi=exp(23.33086-(6111.72784/tbis) 1150 c : +0.15215*log(tbis)) 1151 c qsat_new=eps*esi/(p(i,k)-esi*(1.-eps)) 1152 c snew=cpd*(1.-qnk(i))+cl*qnk(i)+alv*alv*qsat_new/ 1153 c : (rrv*tbis*tbis) 1154 c snew=1./snew 1155 c print*,esi,qsat_new,snew,'esi,qsat,snew' 1156 c tp(i,k)=tg+(alf*qi(i,k)+alv*qg*(1.-(esi/es)))*snew 1157 c print*,k,tp(i,k),qnk(i),'avec glace' 1158 c print*,'tpNAN',tg,alf,qi(i,k),alv,qg,esi,es,snew 1159 c enddo 1160 1161 alv=lv0-clmcpv*(t(i,k)-273.15) 1162 alf=lf0+clmci*(t(i,k)-273.15) 1163 als=alf+alv 1164 tg=tp(i,k) 1165 tp(i,k) = t(i,k) 1166 do j=1,3 1167 esi=exp(23.33086-(6111.72784/tp(i,k)) 1168 : +0.15215*log(tp(i,k))) 1169 qsat_new=eps*esi/(p(i,k)-esi*(1.-eps)) 1170 snew=cpd*(1.-qnk(i))+cl*qnk(i)+alv*als*qsat_new/ 1171 : (rrv*tp(i,k)*tp(i,k)) 1172 snew=1./snew 1173 cc print*,esi,qsat_new,snew,'esi,qsat,snew' 1174 tp(i,k)=tp(i,k)+ 1175 : ( (cpd*(1.-qnk(i))+cl*qnk(i))*(tg-tp(i,k)) + 1176 : alv*(qg-qsat_new) + alf*qi(i,k) )*snew 1177 c print*,k,tp(i,k),qsat_new,qnk(i),qi(i,k), 1178 c : 'k,tp,q,qt,qi avec glace' 1179 enddo 1180 1181 cCR:reprise du code AJ 1182 clw(i,k)=qnk(i)-qsat_new 1183 clw(i,k)=max(0.0,clw(i,k)) 1184 tvp(i,k)=Max(0.,tp(i,k)*(1.+qsat_new/eps-qnk(i))) 1185 c print*,tvp(i,k),'tvp' 1186 endif 1187 if(clw(i,k).lt.1.e-11) then 1188 tp(i,k)=tv(i,k) 1189 tvp(i,k)=tv(i,k) 1190 endif 1191 endif ! (cvflag_ice) 1192 1071 1193 290 continue 1072 1194 300 continue … … 1303 1425 do 590 i=1,ncum 1304 1426 if((k.ge.icb(i)).and.(k.le.inb(i)))then 1427 1428 if (cvflag_ice) then 1429 frac(i,k)=1.-(t(i,k)-243.15)/(263.15-243.15) 1430 frac(i,k)=min(max(frac(i,k),0.0),1.0) 1431 hp(i,k)=hnk(i)+(lv(i,k)+(cpd-cpv)*t(i,k)+frac(i,k)*lf(i,k)) 1432 : *ep(i,k)*clw(i,k) 1433 1434 else 1305 1435 hp(i,k)=hnk(i)+(lv(i,k)+(cpd-cpv)*t(i,k))*ep(i,k)*clw(i,k) 1436 endif 1437 1306 1438 endif 1307 1439 590 continue … … 1555 1687 1556 1688 SUBROUTINE cv3_mixing(nloc,ncum,nd,na,ntra,icb,nk,inb 1557 : ,ph,t,rr,rs,u,v,tra,h,lv, qnk1689 : ,ph,t,rr,rs,u,v,tra,h,lv,lf,frac,qnk 1558 1690 : ,unk,vnk,hp,tv,tvp,ep,clw,m,sig 1559 1691 : ,ment,qent,uent,vent,nent,sij,elij,ments,qents,traent) … … 1567 1699 #include "cvthermo.h" 1568 1700 #include "cv3param.h" 1701 #include "cvflag.h" 1569 1702 1570 1703 c inputs: … … 1578 1711 real tra(nloc,nd,ntra) ! input of convect3 1579 1712 real lv(nloc,na), h(nloc,na), hp(nloc,na) 1713 real lf(nloc,na), frac(nloc,na) 1580 1714 real tv(nloc,na), tvp(nloc,na), ep(nloc,na), clw(nloc,na) 1581 1715 real m(nloc,na) ! input of convect3 … … 1659 1793 rti=qnk(il)-ep(il,i)*clw(il,i) 1660 1794 bf2=1.+lv(il,j)*lv(il,j)*rs(il,j)/(rrv*t(il,j)*t(il,j)*cpd) 1795 1796 1797 if (cvflag_ice) then 1798 c print*,cvflag_ice,'cvflag_ice dans do 700' 1799 if (t(il,j).le.263.15) then 1800 bf2=1.+(lf(il,j)+lv(il,j))*(lv(il,j)+frac(il,j) 1801 : *lf(il,j))*rs(il,j)/(rrv*t(il,j)*t(il,j)*cpd) 1802 endif 1803 endif 1804 1661 1805 anum=h(il,j)-hp(il,i)+(cpv-cpd)*t(il,j)*(rti-rr(il,j)) 1662 1806 denom=h(il,i)-hp(il,i)+(cpd-cpv)*(rr(il,i)-rti)*t(il,j) … … 1671 1815 if((stemp.lt.0.0.or.stemp.gt.1.0.or.altem.gt.cwat) 1672 1816 : .and.j.gt.i)then 1817 1818 if (cvflag_ice) then 1819 anum=anum-(lv(il,j)+frac(il,j)*lf(il,j))*(rti-rs(il,j) 1820 : -cwat*bf2) 1821 denom=denom+(lv(il,j)+frac(il,j)*lf(il,j))*(rr(il,i)-rti) 1822 else 1673 1823 anum=anum-lv(il,j)*(rti-rs(il,j)-cwat*bf2) 1674 1824 denom=denom+lv(il,j)*(rr(il,i)-rti) 1825 endif 1826 1675 1827 if(abs(denom).lt.0.01)denom=0.01 1676 1828 sij(il,i,j)=anum/denom … … 1780 1932 lwork(il)=(nent(il,i).ne.0) 1781 1933 qp=qnk(il)-ep(il,i)*clw(il,i) 1934 1935 if(cvflag_ice) then 1936 1937 anum=h(il,i)-hp(il,i)-(lv(il,i)+frac(il,i)*lf(il,i))* 1938 : (qp-rs(il,i))+(cpv-cpd)*t(il,i)*(qp-rr(il,i)) 1939 denom=h(il,i)-hp(il,i)+(lv(il,i)+frac(il,i)*lf(il,i))* 1940 : (rr(il,i)-qp)+(cpd-cpv)*t(il,i)*(rr(il,i)-qp) 1941 else 1942 1782 1943 anum=h(il,i)-hp(il,i)-lv(il,i)*(qp-rs(il,i)) 1783 1944 : +(cpv-cpd)*t(il,i)*(qp-rr(il,i)) 1784 1945 denom=h(il,i)-hp(il,i)+lv(il,i)*(rr(il,i)-qp) 1785 1946 : +(cpd-cpv)*t(il,i)*(rr(il,i)-qp) 1947 endif 1948 1786 1949 if(abs(denom).lt.0.01)denom=0.01 1787 1950 scrit(il)=anum/denom … … 1948 2111 SUBROUTINE cv3_unsat(nloc,ncum,nd,na,ntra,icb,inb,iflag 1949 2112 : ,t,rr,rs,gz,u,v,tra,p,ph 1950 : ,th,tv,lv, cpn,ep,sigp,clw2113 : ,th,tv,lv,lf,cpn,ep,sigp,clw 1951 2114 : ,m,ment,elij,delt,plcl,coef_clos 1952 o ,mp,rp,up,vp,trap,wt,water,evap,b,sigd 2115 o ,mp,rp,up,vp,trap,wt,water,evap,fondue,ice 2116 : ,faci,b,sigd 1953 2117 o ,wdtrainA,wdtrainM) ! RomP 1954 2118 implicit none … … 1969 2133 real ep(nloc,na), sigp(nloc,na), clw(nloc,na) 1970 2134 real th(nloc,na),tv(nloc,na),lv(nloc,na),cpn(nloc,na) 2135 real lf(nloc,na) 1971 2136 real m(nloc,na), ment(nloc,na,na), elij(nloc,na,na) 1972 2137 real coef_clos(nloc) … … 1978 2143 real mp(nloc,na), rp(nloc,na), up(nloc,na), vp(nloc,na) 1979 2144 real water(nloc,na), evap(nloc,na), wt(nloc,na) 2145 real ice(nloc,na), fondue(nloc,na),faci(nloc,na) 1980 2146 real trap(nloc,na,ntra) 1981 2147 real b(nloc,na), sigd(nloc) … … 1988 2154 c local variables 1989 2155 integer i,j,k,il,num1,ndp1 1990 real tinv, delti 2156 real tinv, delti, coef 1991 2157 real awat, afac, afac1, afac2, bfac 1992 real pr1, pr2, sigt, b6, c6, revap, delth2158 real pr1, pr2, sigt, b6, c6, d6, e6, f6, revap, delth 1993 2159 real amfac, amp2, xf, tf, fac2, ur, sru, fac, d, af, bf 1994 real ampmax 2160 real ampmax, thaw 1995 2161 real tevap(nloc) 1996 real lvcp(nloc,na) 2162 real lvcp(nloc,na),lfcp(nloc,na) 1997 2163 real h(nloc,na),hm(nloc,na) 2164 real frac(nloc,na) 2165 real fraci(nloc,na),prec(nloc,na) 1998 2166 real wdtrain(nloc) 1999 2167 logical lwork(nloc),mplus(nloc) … … 2015 2183 wt(il,i)=0.001 2016 2184 water(il,i)=0.0 2185 frac(il,i)=0.0 2186 faci(il,i)=0.0 2187 fraci(il,i)=0.0 2188 ice(il,i)=0.0 2189 prec(il,i)=0.0 2190 fondue(il,i)=0.0 2017 2191 evap(il,i)=0.0 2018 2192 b(il,i)=0.0 2019 2193 lvcp(il,i)=lv(il,i)/cpn(il,i) 2194 lfcp(il,i)=lf(il,i)/cpn(il,i) 2020 2195 enddo 2021 2196 enddo … … 2115 2290 wt(il,i)=45.0 2116 2291 2292 if (cvflag_ice) then 2293 frac(il,inb(il)) = 1. -(t(il,inb(il))-243.15)/(263.15-243.15) 2294 frac(il,inb(il)) = min(max(frac(il,inb(il)),0.),1.) 2295 fraci(il,inb(il)) = frac(il,inb(il)) 2296 else 2297 continue 2298 endif 2299 2117 2300 if(i.lt.inb(il))then 2301 2302 if (cvflag_ice) then 2303 thaw = (t(il,i)-273.15)/(275.15-273.15) 2304 thaw = min(max(thaw,0.0),1.0) 2305 frac(il,i)=frac(il,i)*(1.-thaw) 2306 else 2307 continue 2308 endif 2309 2118 2310 rp(il,i)=rp(il,i+1) 2119 2311 : +(cpd*(t(il,i+1)-t(il,i))+gz(il,i+1)-gz(il,i))/lv(il,i) 2120 2312 rp(il,i)=0.5*(rp(il,i)+rr(il,i)) 2121 2313 endif 2314 fraci(il,i)=1.-(t(il,i)-243.15)/(263.15-243.15) 2315 fraci(il,i)=min(max(fraci(il,i),0.0),1.0) 2122 2316 rp(il,i)=max(rp(il,i),0.0) 2123 2317 rp(il,i)=amin1(rp(il,i),rs(il,i)) … … 2126 2320 if(i.eq.1)then 2127 2321 afac=p(il,1)*(rs(il,1)-rp(il,1))/(1.0e4+2000.0*p(il,1)*rs(il,1)) 2322 if (cvflag_ice) then 2323 afac1=p(il,i)*(rs(il,1)-rp(il,1))/(1.0e4+2000.0*p(il,1)*rs(il,1)) 2324 endif 2128 2325 else 2129 2326 rp(il,i-1)=rp(il,i) … … 2161 2358 c b6 = bfac*100.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac 2162 2359 c c6 = water(il,i+1) + wdtrain(il)*bfac 2360 c c6 = prec(il,i+1) + wdtrain(il)*bfac 2163 2361 c revap=0.5*(-b6+sqrt(b6*b6+4.*c6)) 2164 2362 c evap(il,i)=sigt*afac*revap 2165 2363 c water(il,i)=revap*revap 2364 c prec(il,i)=revap*revap 2166 2365 cc print *,' i,b6,c6,revap,evap(il,i),water(il,i),wdtrain(il) ', 2167 2366 cc $ i,b6,c6,revap,evap(il,i),water(il,i),wdtrain(il) … … 2169 2368 c 2170 2369 c--------retour à la formulation originale d'Emanuel. 2370 if (cvflag_ice) then 2371 2372 c b6=bfac*50.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac 2373 c c6=prec(il,i+1)+bfac*wdtrain(il) 2374 c : -50.*sigd(il)*bfac*(ph(il,i)-ph(il,i+1))*evap(il,i+1) 2375 c if(c6.gt.0.0)then 2376 c revap=0.5*(-b6+sqrt(b6*b6+4.*c6)) 2377 c 2378 cJAM Attention: evap=sigt*E 2379 c Modification: evap devient l'évaporation en milieu de couche 2380 c car nécessaire dans cv3_yield 2381 c Du coup, il faut modifier pas mal d'équations... 2382 c et l'expression de afac qui devient afac1 2383 c revap=sqrt((prec(i+1)+prec(i))/2) 2384 2385 b6=bfac*50.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac1 2386 c6=prec(il,i+1)+0.5*bfac*wdtrain(il) 2387 c print *,'bfac,sigd(il),sigt,afac1 ',bfac,sigd(il),sigt,afac1 2388 c print *,'prec(il,i+1),wdtrain(il) ',prec(il,i+1),wdtrain(il) 2389 c print *,'b6,c6,b6*b6+4.*c6 ',b6,c6,b6*b6+4.*c6 2390 if (c6 .gt. b6*b6+1.e-20) then 2391 revap=2.*c6/(b6+sqrt(b6*b6+4.*c6)) 2392 else 2393 revap=(-b6+sqrt(b6*b6+4.*c6))/2. 2394 endif 2395 prec(il,i)=Max(0.,2.*revap*revap-prec(il,i+1)) 2396 c print*,prec(il,i),'neige' 2397 2398 cjyg Dans sa formulation originale, Emanuel calcule l'evaporation par: 2399 cc evap(il,i)=sigt*afac*revap 2400 c ce qui n'est pas correct. Dans cv_routines, la formulation a été modifiee. 2401 c Ici,l'evaporation evap est simplement calculee par l'equation de 2402 c conservation. 2403 c prec(il,i)=revap*revap 2404 c else 2405 cjyg---- Correction : si c6 <= 0, water(il,i)=0. 2406 c prec(il,i)=0. 2407 c endif 2408 2409 cjyg--- Dans tous les cas, evaporation = [tt ce qui entre dans la couche i] 2410 c moins [tt ce qui sort de la couche i] 2411 c print *, 'evap avec ice' 2412 evap(il,i)= 2413 : (wdtrain(il)+sigd(il)*wt(il,i)*(prec(il,i+1)-prec(il,i))) 2414 : /(sigd(il)*(ph(il,i)-ph(il,i+1))*100.) 2415 2416 d6=bfac*wdtrain(il)-100.*sigd(il)*bfac*(ph(il,i)-ph(il,i+1)) 2417 : *evap(il,i) 2418 e6=bfac*wdtrain(il) 2419 f6=-100.*sigd(il)*bfac*(ph(il,i)-ph(il,i+1))* 2420 : evap(il,i) 2421 2422 thaw=(t(il,i)-273.15)/(275.15-273.15) 2423 thaw=min(max(thaw,0.0),1.0) 2424 water(il,i)=water(il,i+1)+(1-fraci(il,i))*d6 2425 water(il,i)=max(water(il,i),0.) 2426 ice(il,i)=ice(il,i+1)+fraci(il,i)*d6 2427 ice(il,i)=max(ice(il,i),0.) 2428 fondue(il,i)=ice(il,i)*thaw 2429 water(il,i)=water(il,i)+fondue(il,i) 2430 ice(il,i)=ice(il,i)-fondue(il,i) 2431 2432 if(water(il,i)+ice(il,i).lt.1.e-30)then 2433 faci(il,i)=0. 2434 else 2435 faci(il,i)=ice(il,i)/(water(il,i)+ice(il,i)) 2436 endif 2437 2438 c water(il,i)=water(il,i+1)+(1.-fraci(il,i))*e6+(1.-faci(il,i))*f6 2439 c water(il,i)=max(water(il,i),0.) 2440 c ice(il,i)=ice(il,i+1)+fraci(il,i)*e6+faci(il,i)*f6 2441 c ice(il,i)=max(ice(il,i),0.) 2442 c fondue(il,i)=ice(il,i)*thaw 2443 c water(il,i)=water(il,i)+fondue(il,i) 2444 c ice(il,i)=ice(il,i)-fondue(il,i) 2445 c 2446 c if((water(il,i)+ice(il,i)).lt.1.e-30)then 2447 c faci(il,i)=0. 2448 c else 2449 c faci(il,i)=ice(il,i)/(water(il,i)+ice(il,i)) 2450 c endif 2451 2452 else 2171 2453 b6=bfac*50.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac 2172 2454 c6=water(il,i+1)+bfac*wdtrain(il) … … 2174 2456 if(c6.gt.0.0)then 2175 2457 revap=0.5*(-b6+sqrt(b6*b6+4.*c6)) 2176 cjyg Dans sa formulation originale, Emanuel calcule l'evaporation par:2177 cc evap(il,i)=sigt*afac*revap2178 c ce qui n'est pas correct. Dans cv_routines, la formulation a été modifiee.2179 c Ici,l'evaporation evap est simplement calculee par l'equation de2180 c conservation.2181 2458 water(il,i)=revap*revap 2182 2459 else 2183 cjyg---- Correction : si c6 <= 0, water(il,i)=0. 2184 water(il,i) = 0. 2460 water(il,i)= 0. 2185 2461 endif 2186 cJYG/IM : ci-dessous formulation originale de KE 2187 c evap(il,i)=-evap(il,i+1) 2188 c : +(wdtrain(il)+sigd(il)*wt(il,i)*water(il,i+1)) 2189 c : /(sigd(il)*(ph(il,i)-ph(il,i+1))*50.) 2190 c 2191 cJYG/IM : ci-dessous modification formulation originale de KE 2192 c pour eliminer oscillations verticales de pluie se produisant 2193 c lorsqu'il y a evaporation totale de la pluie 2194 c 2195 c evap(il,i)= +(wdtrain(il)+sigd(il)*wt(il,i)*water(il,i+1)) !itlmd(jyg) 2196 c : /(sigd(il)*(ph(il,i)-ph(il,i+1))*100.) 2197 c end if !itlmd(jyg) 2198 cjyg--- Dans tous les cas, evaporation = [tt ce qui entre dans la couche i] 2199 c moins [tt ce qui sort de la couche i] 2462 c print *, 'evap sans ice' 2200 2463 evap(il,i)= 2201 2464 : (wdtrain(il)+sigd(il)*wt(il,i)*(water(il,i+1)-water(il,i))) 2202 2465 : /(sigd(il)*(ph(il,i)-ph(il,i+1))*100.) 2203 c 2466 2467 endif 2204 2468 endif !(i.le.inb(il) .and. lwork(il)) 2205 2469 995 Continue … … 2215 2479 tevap(il)=max(0.0,evap(il,i)) 2216 2480 delth=max(0.001,(th(il,i)-th(il,i-1))) 2481 if (cvflag_ice) then 2482 if (cvflag_grav) then 2483 mp(il,i)=100.*ginv*(lvcp(il,i)*sigd(il)*tevap(il) 2484 : *(p(il,i-1)-p(il,i))/delth 2485 : +lfcp(il,i)*sigd(il)*faci(il,i)*tevap(il) 2486 : *(p(il,i-1)-p(il,i))/delth 2487 : +lfcp(il,i)*sigd(il)*wt(il,i)/100.*fondue(il,i) 2488 : *(p(il,i-1)-p(il,i))/delth/(ph(il,i)-ph(il,i+1))) 2489 else 2490 mp(il,i)=10.*(lvcp(il,i)*sigd(il)*tevap(il) 2491 : *(p(il,i-1)-p(il,i))/delth 2492 : +lfcp(il,i)*sigd(il)*faci(il,i)*tevap(il) 2493 : *(p(il,i-1)-p(il,i))/delth 2494 : +lfcp(il,i)*sigd(il)*wt(il,i)/100.*fondue(il,i) 2495 : *(p(il,i-1)-p(il,i))/delth/(ph(il,i)-ph(il,i+1))) 2496 2497 endif 2498 else 2217 2499 if (cvflag_grav) then 2218 2500 mp(il,i)=100.*ginv*lvcp(il,i)*sigd(il)*tevap(il) … … 2223 2505 endif 2224 2506 c 2507 endif 2508 c 2225 2509 endif !(i.le.inb(il) .and. lwork(il) .and. i.ne.1) 2226 2510 996 Continue … … 2243 2527 : /(lvcp(il,i)*sigd(il)*th(il,i)) 2244 2528 af=xf*tf+mp(il,i+1)*mp(il,i+1)*tinv 2529 2530 if (cvflag_ice) then 2531 bf=2.*(tinv*mp(il,i+1))**3+tinv*mp(il,i+1)*xf*tf 2532 : +50.*(p(il,i-1)-p(il,i))*xf* 2533 : (tevap(il)*(1.+(lf(il,i)/lv(il,i))*faci(il,i))+ 2534 : (lf(il,i)/lv(il,i))*wt(il,i)/100.*fondue(il,i)/ 2535 : (ph(il,i)-ph(il,i+1))) 2536 else 2537 2245 2538 bf=2.*(tinv*mp(il,i+1))**3+tinv*mp(il,i+1)*xf*tf 2246 2539 : +50.*(p(il,i-1)-p(il,i))*xf*tevap(il) 2540 endif 2541 2247 2542 fac2=1.0 2248 2543 if(bf.lt.0.0)fac2=-1.0 … … 2262 2557 mp(il,i)=max(0.0,mp(il,i)) 2263 2558 2559 if (cvflag_ice) then 2264 2560 if (cvflag_grav) then 2265 2561 Cjyg : il y a vraisemblablement une erreur dans la ligne 2 suivante: 2266 2562 C il faut diviser par (mp(il,i)*sigd(il)*grav) et non par (mp(il,i)+sigd(il)*0.1). 2267 2563 C Et il faut bien revoir les facteurs 100. 2268 b(il,i-1)=b(il,i)+100.0*(p(il,i-1)-p(il,i))*tevap(il) 2564 b(il,i-1)=b(il,i)+100.0*(p(il,i-1)-p(il,i))* 2565 : (tevap(il)*(1.+(lf(il,i)/lv(il,i))*faci(il,i))+ 2566 : (lf(il,i)/lv(il,i))*wt(il,i)/100.*fondue(il,i) 2567 : /(ph(il,i)-ph(il,i+1))) 2568 2 /(mp(il,i)+sigd(il)*0.1) 2569 3 -10.0*(th(il,i)-th(il,i-1))*t(il,i)/(lvcp(il,i) 2570 : *sigd(il)*th(il,i)) 2571 else 2572 b(il,i-1)=b(il,i)+100.0*(p(il,i-1)-p(il,i))* 2573 : (tevap(il)*(1.+(lf(il,i)/lv(il,i))*faci(il,i))+ 2574 : (lf(il,i)/lv(il,i))*wt(il,i)/100.*fondue(il,i) 2575 : /(ph(il,i)-ph(il,i+1))) 2576 2 /(mp(il,i)+sigd(il)*0.1) 2577 3 -10.0*(th(il,i)-th(il,i-1))*t(il,i)/(lvcp(il,i) 2578 : *sigd(il)*th(il,i)) 2579 endif 2580 else 2581 if (cvflag_grav) then 2582 b(il,i-1)=b(il,i)+100.0*(p(il,i-1)-p(il,i))*tevap(il) 2269 2583 2 /(mp(il,i)+sigd(il)*0.1) 2270 2584 3 -10.0*(th(il,i)-th(il,i-1))*t(il,i)/(lvcp(il,i) … … 2276 2590 : *sigd(il)*th(il,i)) 2277 2591 endif 2592 endif 2278 2593 b(il,i-1)=max(b(il,i-1),0.0) 2279 2594 c … … 2391 2706 : ,icb,inb,delt 2392 2707 : ,t,rr,t_wake,rr_wake,s_wake,u,v,tra 2393 : ,gz,p,ph,h,hp,lv, cpn,th,th_wake2708 : ,gz,p,ph,h,hp,lv,lf,cpn,th,th_wake 2394 2709 : ,ep,clw,m,tp,mp,rp,up,vp,trap 2395 : ,wt,water, evap,b,sigd2710 : ,wt,water,ice,evap,fondue,faci,b,sigd 2396 2711 : ,ment,qent,hent,iflag_mix,uent,vent 2397 2712 : ,nent,elij,traent,sig … … 2422 2737 real th(nloc,na), p(nloc,nd), tp(nloc,na) 2423 2738 real lv(nloc,na), cpn(nloc,na), ep(nloc,na), clw(nloc,na) 2739 real lf(nloc,na) 2424 2740 real m(nloc,na), mp(nloc,na), rp(nloc,na), up(nloc,na) 2425 2741 real vp(nloc,na), wt(nloc,nd), trap(nloc,nd,ntra) 2426 2742 real water(nloc,na), evap(nloc,na), b(nloc,na), sigd(nloc) 2743 real fondue(nloc,na),faci(nloc,na), ice(nloc,na) 2427 2744 real ment(nloc,na,na), qent(nloc,na,na), uent(nloc,na,na) 2428 2745 real hent(nloc,na,na) … … 2455 2772 real cpinv, rdcp, dpinv 2456 2773 real awat(nloc) 2457 real lvcp(nloc,na), mke(nloc,na)2774 real lvcp(nloc,na), lfcp(nloc,na), mke(nloc,na) 2458 2775 real am(nloc), work(nloc), ad(nloc), amp1(nloc) 2459 2776 c!! real up1(nloc), dn1(nloc) … … 2513 2830 do il=1,ncum 2514 2831 lvcp(il,i)=lv(il,i)/cpn(il,i) 2832 lfcp(il,i)=lf(il,i)/cpn(il,i) 2515 2833 enddo 2516 2834 enddo … … 2522 2840 do il=1,ncum 2523 2841 if(ep(il,inb(il)).ge.0.0001 .and. iflag(il) .le. 1)then 2842 if (cvflag_ice) then 2843 if (cvflag_grav) then 2844 precip(il)=wt(il,1)*sigd(il)*(water(il,1)+ice(il,1))*86400. 2845 : *1000./(rowl*grav) 2846 else 2847 precip(il)=wt(il,1)*sigd(il)*(water(il,1)+ice(il,1))*8640. 2848 endif 2849 else 2524 2850 if (cvflag_grav) then 2525 2851 precip(il)=wt(il,1)*sigd(il)*water(il,1)*86400.*1000. … … 2527 2853 else 2528 2854 precip(il)=wt(il,1)*sigd(il)*water(il,1)*8640. 2855 endif 2529 2856 endif 2530 2857 endif … … 2539 2866 if(ep(il,inb(il)).ge.0.0001 .and. i.le.inb(il) 2540 2867 : .and. iflag(il) .le. 1)then 2868 if (cvflag_ice) then 2869 if (cvflag_grav) then 2870 VPrecip(il,i) = wt(il,i)*sigd(il)*(water(il,i)+ice(il,i)) 2871 : /grav 2872 else 2873 VPrecip(il,i) = wt(il,i)*sigd(il)*(water(il,i)+ice(il,i)) 2874 : /10. 2875 endif 2876 else 2541 2877 if (cvflag_grav) then 2542 2878 VPrecip(il,i) = wt(il,i)*sigd(il)*water(il,i)/grav 2543 2879 else 2544 2880 VPrecip(il,i) = wt(il,i)*sigd(il)*water(il,i)/10. 2881 endif 2545 2882 endif 2546 2883 endif … … 2585 2922 cjyg Correction pour conserver l'eau 2586 2923 ccc ft(il,1)=-0.5*lvcp(il,1)*sigd(il)*(evap(il,1)+evap(il,2)) !precip 2587 ft(il,1)=-lvcp(il,1)*sigd(il)*evap(il,1) !precip 2924 if (cvflag_ice) then 2925 ft(il,1)=-lvcp(il,1)*sigd(il)*evap(il,1) 2926 : -lfcp(il,1)*sigd(il)*evap(il,1)*faci(il,1) 2927 : -lfcp(il,1)*sigd(il)*(fondue(il,1)*wt(il,1))/ 2928 : (100.*(ph(il,1)-ph(il,2))) !precip 2929 else 2930 ft(il,1)=-lvcp(il,1)*sigd(il)*evap(il,1) 2931 endif 2588 2932 2589 2933 if (cvflag_grav) then … … 2595 2939 endif 2596 2940 2941 if (cvflag_ice) then 2942 ft(il,1)=ft(il,1)+0.01*sigd(il)*wt(il,1)*(cl-cpd)*water(il,2) 2943 : *(t_wake(il,2)-t_wake(il,1))*work(il)/cpn(il,1)+ 2944 : 0.01*sigd(il)*wt(il,1)*(ci-cpd)*ice(il,2)* 2945 : (t_wake(il,2)-t_wake(il,1))*work(il)/cpn(il,1) 2946 else 2597 2947 ft(il,1)=ft(il,1)+0.01*sigd(il)*wt(il,1)*(cl-cpd)*water(il,2) 2598 2948 : *(t_wake(il,2)-t_wake(il,1))*work(il)/cpn(il,1) 2949 endif 2599 2950 2600 2951 ftd(il,1) = ft(il,1) ! fin precip … … 2791 3142 ! precip 2792 3143 ccc ft(il,i)= -0.5*sigd(il)*lvcp(il,i)*(evap(il,i)+evap(il,i+1)) 3144 if (cvflag_ice) then 2793 3145 ft(il,i)= -sigd(il)*lvcp(il,i)*evap(il,i) 3146 : -sigd(il)*lfcp(il,i)*evap(il,i)*faci(il,i) 3147 : -sigd(il)*lfcp(il,i)*fondue(il,i)*wt(il,i)/ 3148 : (100.*(p(il,i-1)-p(il,i))) 3149 else 3150 ft(il,i)= -sigd(il)*lvcp(il,i)*evap(il,i) 3151 endif 3152 2794 3153 rat=cpn(il,i-1)*cpinv 2795 3154 c … … 2798 3157 : *(mp(il,i+1)*t_wake(il,i)*b(il,i) 2799 3158 : -mp(il,i)*t_wake(il,i-1)*rat*b(il,i-1))*dpinv 3159 if (cvflag_ice) then 2800 3160 ft(il,i)=ft(il,i)+0.01*sigd(il)*wt(il,i)*(cl-cpd)*water(il,i+1) 2801 3161 : *(t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv 3162 : +0.01*sigd(il)*wt(il,i)*(ci-cpd)*ice(il,i+1)* 3163 : (t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv 3164 else 3165 ft(il,i)=ft(il,i)+0.01*sigd(il)*wt(il,i)*(cl-cpd)*water(il,i+1) 3166 : *(t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv 3167 endif 3168 2802 3169 ftd(il,i)=ft(il,i) 2803 3170 ! fin precip … … 2818 3185 : *(mp(il,i+1)*t_wake(il,i)*b(il,i) 2819 3186 : -mp(il,i)*t_wake(il,i-1)*rat*b(il,i-1))*dpinv 3187 3188 if (cvflag_ice) then 2820 3189 ft(il,i)=ft(il,i)+0.01*sigd(il)*wt(il,i)*(cl-cpd)*water(il,i+1) 2821 3190 : *(t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv 3191 : +0.01*sigd(il)*wt(il,i)*(ci-cpd)*ice(il,i+1)* 3192 : (t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv 3193 else 3194 ft(il,i)=ft(il,i)+0.01*sigd(il)*wt(il,i)*(cl-cpd)*water(il,i+1) 3195 : *(t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv 3196 endif 3197 2822 3198 ftd(il,i)=ft(il,i) 2823 3199 ! fin precip … … 3744 4120 return 3745 4121 end 3746 -
LMDZ5/branches/testing/libf/phylmd/cv3a_compress.F
r1669 r1864 6 6 : ,u1,v1,gz1,th1,th1_wake 7 7 : ,tra1 8 : ,h1 ,lv1 ,cpn1 ,p1,ph1,tv1 ,tp1,tvp1,clw19 : ,h1_wake,lv1_wake, cpn1_wake ,tv1_wake8 : ,h1 ,lv1, lf1 ,cpn1 ,p1,ph1,tv1 ,tp1,tvp1,clw1 9 : ,h1_wake,lv1_wake,lf1_wake,cpn1_wake ,tv1_wake 10 10 : ,sig1,w01,ptop21 11 11 : ,Ale1,Alp1 … … 16 16 o ,u,v,gz,th,th_wake 17 17 o ,tra 18 o ,h ,lv ,cpn ,p,ph,tv ,tp,tvp,clw19 o ,h_wake,lv_wake, cpn_wake ,tv_wake18 o ,h ,lv, lf ,cpn ,p,ph,tv ,tp,tvp,clw 19 o ,h_wake,lv_wake,lf_wake,cpn_wake ,tv_wake 20 20 o ,sig,w0,ptop2 21 21 o ,Ale,Alp ) … … 45 45 real gz1(len,nd),th1(len,nd),th1_wake(len,nd) 46 46 real tra1(len,nd,ntra) 47 real h1(len,nd),lv1(len,nd), cpn1(len,nd)47 real h1(len,nd),lv1(len,nd),lf1(len,nd),cpn1(len,nd) 48 48 real p1(len,nd),ph1(len,nd+1),tv1(len,nd),tp1(len,nd) 49 49 real tvp1(len,nd),clw1(len,nd) 50 50 real h1_wake(len,nd),lv1_wake(len,nd),cpn1_wake(len,nd) 51 real tv1_wake(len,nd) 51 real tv1_wake(len,nd),lf1_wake(len,nd) 52 52 real sig1(len,nd), w01(len,nd), ptop21(len) 53 53 real Ale1(len),Alp1(len) … … 65 65 real gz(len,nd),th(len,nd),th_wake(len,nd) 66 66 real tra(len,nd,ntra) 67 real h(len,nd),lv(len,nd), cpn(len,nd)67 real h(len,nd),lv(len,nd),lf(len,nd),cpn(len,nd) 68 68 real p(len,nd),ph(len,nd+1),tv(len,nd),tp(len,nd) 69 69 real tvp(len,nd),clw(len,nd) 70 70 real h_wake(len,nd),lv_wake(len,nd),cpn_wake(len,nd) 71 real tv_wake(len,nd) 71 real tv_wake(len,nd),lf_wake(len,nd) 72 72 real sig(len,nd), w0(len,nd), ptop2(len) 73 73 real Ale(len),Alp(len) … … 99 99 h(nn,k)=h1(i,k) 100 100 lv(nn,k)=lv1(i,k) 101 lf(nn,k)=lf1(i,k) 101 102 cpn(nn,k)=cpn1(i,k) 102 103 p(nn,k)=p1(i,k) … … 108 109 h_wake(nn,k)=h1_wake(i,k) 109 110 lv_wake(nn,k)=lv1_wake(i,k) 111 lf_wake(nn,k)=lf1_wake(i,k) 110 112 cpn_wake(nn,k)=cpn1_wake(i,k) 111 113 tv_wake(nn,k)=tv1_wake(i,k) -
LMDZ5/branches/testing/libf/phylmd/cv_driver.F
r1795 r1864 341 341 ! --- SET CONSTANTS AND PARAMETERS 342 342 !------------------------------------------------------------------- 343 print *, '-> cv_driver' !jyg343 ! print *, '-> cv_driver' !jyg 344 344 c -- set simulation flags: 345 345 c (common cvflag) 346 346 347 CALL cv_flag 347 CALL cv_flag(0) 348 348 349 349 c -- set thermodynamical constants: … … 494 494 400 continue 495 495 496 print*,'cv_driver : klon, ncum = ',len,ncum496 ! print*,'cv_driver : klon, ncum = ',len,ncum 497 497 498 498 IF (ncum.gt.0) THEN … … 696 696 9999 continue 697 697 698 print *, 'fin cv_driver ->' !jyg698 ! print *, 'fin cv_driver ->' !jyg 699 699 return 700 700 end 701 701 702 702 !================================================================== 703 SUBROUTINE cv_flag 703 SUBROUTINE cv_flag(iflag_ice_thermo) 704 704 implicit none 705 706 c Argument : iflag_ice_thermo : ice thermodynamics is taken into account if 707 c iflag_ice_thermo >=1 708 INTEGER iflag_ice_thermo 705 709 706 710 #include "cvflag.h" … … 709 713 c differente de 10.0 dans convect3: 710 714 cvflag_grav = .TRUE. 715 cvflag_ice = iflag_ice_thermo .GE. 1 711 716 712 717 return … … 744 749 cpv = RCPV 745 750 cl = RCW 751 ci = RCS 746 752 rrv = RV 747 753 rrd = RD 748 754 lv0 = RLVTT 755 lf0 = RLSTT-RLVTT 749 756 g = RG ! not used in convect3 750 757 c ori t0 = RTT … … 758 765 clmcpv=cl-cpv 759 766 clmcpd=cl-cpd 767 clmci=cl-ci 760 768 cpdmcp=cpd-cpv 761 769 cpvmcpd=cpv-cpd -
LMDZ5/branches/testing/libf/phylmd/cva_driver.F
r1795 r1864 3 3 ! 4 4 SUBROUTINE cva_driver(len,nd,ndp1,ntra,nloc, 5 & iflag_con,iflag_mix, 5 & iflag_con,iflag_mix,iflag_ice_thermo, 6 6 & iflag_clos,delt, 7 7 & t1,q1,qs1,t1_wake,q1_wake,qs1_wake,s1_wake, … … 52 52 C iflag_con Integer Input version of convect (3/4) 53 53 C iflag_mix Integer Input version of mixing (0/1/2) 54 C iflag_ice_thermo Integer Input accounting for ice thermodynamics (0/1) 54 55 C iflag_clos Integer Input version of closure (0/1) 55 56 C delt Real Input time step … … 155 156 integer iflag_con 156 157 integer iflag_mix 158 integer iflag_ice_thermo 157 159 integer iflag_clos 158 160 real delt … … 381 383 real buoybase1(klon) 382 384 385 real lf1(klon,klev) ,lf1_wake(klon,klev) 383 386 real lv1(klon,klev) ,lv1_wake(klon,klev) 384 387 real cpn1(klon,klev),cpn1_wake(klon,klev) … … 419 422 real gz(nloc,klev),h(nloc,klev) ,hm(nloc,klev) 420 423 real h_wake(nloc,klev),hm_wake(nloc,klev) 421 real lv(nloc,klev) ,cpn(nloc,klev)422 real lv_wake(nloc,klev), cpn_wake(nloc,klev)424 real lv(nloc,klev), lf(nloc,klev), cpn(nloc,klev) 425 real lv_wake(nloc,klev), lf_wake(nloc,klev), cpn_wake(nloc,klev) 423 426 real p(nloc,klev),ph(nloc,klev+1),tv(nloc,klev) ,tp(nloc,klev) 424 427 real tv_wake(nloc,klev) … … 430 433 real sig(nloc,klev), w0(nloc,klev), ptop2(nloc) 431 434 real hp(nloc,klev), ep(nloc,klev), sigp(nloc,klev) 432 real frac(nloc),buoy(nloc,klev)435 real buoy(nloc,klev) 433 436 real cape(nloc) 434 437 real cin(nloc) … … 444 447 real sigd(nloc) 445 448 ! real mp(nloc,klev), qp(nloc,klev), up(nloc,klev), vp(nloc,klev) 446 ! real wt(nloc,klev), water(nloc,klev), evap(nloc,klev) 449 ! real wt(nloc,klev), water(nloc,klev), evap(nloc,klev), ice(nloc,klev) 447 450 ! real b(nloc,klev), sigd(nloc) 448 451 ! save mp,qp,up,vp,wt,water,evap,b 449 452 real, save, allocatable :: mp(:,:),qp(:,:),up(:,:),vp(:,:) 450 real, save, allocatable :: wt(:,:),water(:,:),evap(:,:), b(:,:) 451 c$OMP THREADPRIVATE(mp,qp,up,vp,wt,water,evap,b) 453 real, save, allocatable :: wt(:,:),water(:,:),evap(:,:) 454 real, save, allocatable :: ice(:,:),fondue(:,:), b(:,:) 455 real, save, allocatable :: frac(:,:), faci(:,:) 456 c$OMP THREADPRIVATE(mp,qp,up,vp,wt,water,evap,ice,fondue,b,frac,faci) 452 457 real ft(nloc,klev), fq(nloc,klev) 453 458 real ftd(nloc,klev), fqd(nloc,klev) … … 496 501 allocate(mp(nloc,klev), qp(nloc,klev), up(nloc,klev)) 497 502 allocate(vp(nloc,klev), wt(nloc,klev), water(nloc,klev)) 503 allocate(ice(nloc,klev), fondue(nloc,klev)) 498 504 allocate(evap(nloc,klev), b(nloc,klev)) 505 allocate(frac(nloc,klev), faci(nloc,klev)) 499 506 first=.false. 500 507 endif … … 502 509 c (common cvflag) 503 510 504 CALL cv_flag 511 CALL cv_flag(iflag_ice_thermo) 505 512 506 513 c -- set thermodynamical constants: … … 610 617 ! print*,'t1, q1 ',t1,q1 611 618 CALL cv3_prelim(len,nd,ndp1,t1,q1,p1,ph1 ! nd->na 612 o ,lv1, cpn1,tv1,gz1,h1,hm1,th1)619 o ,lv1,lf1,cpn1,tv1,gz1,h1,hm1,th1) 613 620 614 621 c 615 622 CALL cv3_prelim(len,nd,ndp1,t1_wake,q1_wake,p1,ph1 ! nd->na 616 o ,lv1_wake, cpn1_wake,tv1_wake,gz1_wake623 o ,lv1_wake,lf1_wake,cpn1_wake,tv1_wake,gz1_wake 617 624 o ,h1_wake,bid,th1_wake) 618 625 … … 755 762 : ,u1,v1,gz1,th1,th1_wake 756 763 : ,tra1 757 : ,h1 ,lv1 758 : ,h1_wake,lv1_wake, cpn1_wake ,tv1_wake764 : ,h1 ,lv1, lf1,cpn1 ,p1,ph1,tv1 ,tp1,tvp1,clw1 765 : ,h1_wake,lv1_wake,lf1_wake,cpn1_wake ,tv1_wake 759 766 : ,sig1,w01,ptop21 760 767 : ,Ale1,Alp1 … … 765 772 o ,u,v,gz,th,th_wake 766 773 o ,tra 767 o ,h ,lv ,cpn ,p,ph,tv ,tp,tvp,clw768 o ,h_wake,lv_wake, cpn_wake ,tv_wake774 o ,h ,lv, lf ,cpn ,p,ph,tv ,tp,tvp,clw 775 o ,h_wake,lv_wake,lf_wake,cpn_wake ,tv_wake 769 776 o ,sig,w0,ptop2 770 777 o ,Ale,Alp ) … … 800 807 CALL cv3_undilute2(nloc,ncum,nd,icb,icbs,nk !na->nd 801 808 : ,tnk,qnk,gznk,hnk,t,q,qs,gz 802 : ,p,h,tv,lv,pbase,buoybase,plcl 803 o ,inb,tp,tvp,clw,hp,ep,sigp,buoy) 809 : ,p,h,tv,lv,lf,pbase,buoybase,plcl 810 o ,inb,tp,tvp,clw,hp,ep,sigp,buoy 811 : ,frac) 804 812 805 813 endif … … 816 824 !------------------------------------------------------------------- 817 825 IF (iflag_con .eq. 3) THEN 826 if ((iflag_ice_thermo.eq.1).and.(iflag_mix.ne.0)) then 827 write(*,*) " iflag_ice_thermo==1 requires iflag_mix==0", 828 & " but iflag_mix=",iflag_mix, ". Might as well stop here." 829 stop 830 endif 818 831 IF (iflag_mix .ge. 1 ) THEN 819 832 CALL zilch(supmax,nloc*klev) … … 877 890 IF (iflag_mix.eq.0) THEN 878 891 CALL cv3_mixing(nloc,ncum,nd,nd,ntra,icb,nk,inb ! na->nd 879 : ,ph,t,q,qs,u,v,tra,h,lv, qnk892 : ,ph,t,q,qs,u,v,tra,h,lv,lf,frac,qnk 880 893 : ,unk,vnk,hp,tv,tvp,ep,clw,m,sig 881 894 o ,ment,qent,uent,vent,nent,sigij,elij,ments,qents,traent) … … 913 926 CALL cv3_unsat(nloc,ncum,nd,nd,ntra,icb,inb,iflag ! na->nd 914 927 : ,t_wake,q_wake,qs_wake,gz,u,v,tra,p,ph 915 : ,th_wake,tv_wake,lv_wake, cpn_wake928 : ,th_wake,tv_wake,lv_wake,lf_wake,cpn_wake 916 929 : ,ep,sigp,clw 917 930 : ,m,ment,elij,delt,plcl,coef_clos 918 o ,mp,qp,up,vp,trap,wt,water,evap,b,sigd 931 o ,mp,qp,up,vp,trap,wt,water,evap,fondue,ice 932 : ,faci,b,sigd 919 933 o ,wdtrainA,wdtrainM) ! RomP 920 934 endif … … 943 957 : ,icb,inb,delt 944 958 : ,t,q,t_wake,q_wake,s_wake,u,v,tra 945 : ,gz,p,ph,h,hp,lv, cpn,th,th_wake959 : ,gz,p,ph,h,hp,lv,lf,cpn,th,th_wake 946 960 : ,ep,clw,m,tp,mp,qp,up,vp,trap 947 : ,wt,water, evap,b,sigd961 : ,wt,water,ice,evap,fondue,faci,b,sigd 948 962 : ,ment,qent,hent,iflag_mix,uent,vent 949 963 : ,nent,elij,traent,sig … … 1043 1057 return 1044 1058 end 1045 -
LMDZ5/branches/testing/libf/phylmd/cvflag.h
r766 r1864 3 3 ! 4 4 logical cvflag_grav 5 logical cvflag_ice 5 6 6 COMMON /cvflag/ cvflag_grav 7 COMMON /cvflag/ cvflag_grav, cvflag_ice 7 8 c$OMP THREADPRIVATE(/cvflag/) -
LMDZ5/branches/testing/libf/phylmd/cvthermo.h
r766 r1864 4 4 c Thermodynamical constants for convectL: 5 5 6 real cpd, cpv, cl, rrv, rrd, lv0, g, rowl, t07 real clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl 6 real cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0 7 real clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl, clmci 8 8 real eps, epsi, epsim1 9 9 real ginv, hrd 10 10 real grav 11 11 12 COMMON /cvthermo/ cpd, cpv, cl, rrv, rrd, lv0, g, rowl, t013 : , clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl14 : , eps, epsi, epsim1, ginv, hrd, grav12 COMMON /cvthermo/ cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl 13 : ,t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl 14 : ,clmci, eps, epsi, epsim1, ginv, hrd, grav 15 15 16 16 c$OMP THREADPRIVATE(/cvthermo/) -
LMDZ5/branches/testing/libf/phylmd/declare_STDlev.h
r1707 r1864 1 1 cIM for NMC files 2 real twriteSTD(klon,nlevSTD,nfiles)3 real qwriteSTD(klon,nlevSTD,nfiles)4 real rhwriteSTD(klon,nlevSTD,nfiles)5 real phiwriteSTD(klon,nlevSTD,nfiles)6 real uwriteSTD(klon,nlevSTD,nfiles)7 real vwriteSTD(klon,nlevSTD,nfiles)8 real wwriteSTD(klon,nlevSTD,nfiles)2 ! real twriteSTD(klon,nlevSTD,nfiles) 3 ! real qwriteSTD(klon,nlevSTD,nfiles) 4 ! real rhwriteSTD(klon,nlevSTD,nfiles) 5 ! real phiwriteSTD(klon,nlevSTD,nfiles) 6 ! real uwriteSTD(klon,nlevSTD,nfiles) 7 ! real vwriteSTD(klon,nlevSTD,nfiles) 8 ! real wwriteSTD(klon,nlevSTD,nfiles) 9 9 10 10 real twriteSTD3(klon,nlevSTD3) -
LMDZ5/branches/testing/libf/phylmd/etat0_netcdf.F90
r1795 r1864 504 504 zmax0(:) = 40. 505 505 f0(:) = 1.e-5 506 ema_work1(:,:) = 0.507 ema_work2(:,:) = 0.506 sig1(:,:) = 0. 507 w01(:,:) = 0. 508 508 wake_deltat(:,:) = 0. 509 509 wake_deltaq(:,:) = 0. -
LMDZ5/branches/testing/libf/phylmd/fisrtilp.F90
r1796 r1864 8 8 frac_impa, frac_nucl, beta, & 9 9 prfl, psfl, rhcl, zqta, fraca, & 10 ztv, zpspsk, ztla, zthl, iflag_cldcon) 10 ztv, zpspsk, ztla, zthl, iflag_cldcon, & 11 iflag_ice_thermo) 11 12 12 13 ! … … 51 52 REAL zpspsk(klon,klev),ztla(klon,klev) 52 53 REAL zthl(klon,klev) 54 REAL ztfondue, qsl, qsi 53 55 54 56 logical lognormale(klon) 57 logical ice_thermo 55 58 56 59 !AA … … 77 80 INTEGER ncoreczq 78 81 INTEGER iflag_cldcon 82 INTEGER iflag_ice_thermo 79 83 PARAMETER (ninter=5) 80 84 LOGICAL evap_prec ! evaporation de la pluie … … 97 101 INTEGER i, k, n, kk 98 102 REAL zqs(klon), zdqs(klon), zdelta, zcor, zcvm5 99 REAL zrfl(klon), zrfln(klon), zqev, zqevt 100 REAL zoliq(klon), zcond(klon), zq(klon), zqn(klon), zdelq 103 REAL zrfl(klon), zrfln(klon), zqev, zqevt 104 REAL zifl(klon), zifln(klon), zqev0,zqevi, zqevti 105 REAL zoliq(klon), zcond(klon), zq(klon), zqn(klon), zdelq 106 REAL zoliqp(klon), zoliqi(klon) 101 107 REAL ztglace, zt(klon) 102 108 INTEGER nexpo ! exponentiel pour glace/eau 103 109 REAL zdz(klon),zrho(klon),ztot , zrhol(klon) 104 110 REAL zchau ,zfroi ,zfice(klon),zneb(klon) 111 REAL zmelt, zpluie, zice, zcondold 112 PARAMETER (ztfondue=278.15) 105 113 ! 106 114 LOGICAL appel1er … … 145 153 DATA appel1er /.TRUE./ 146 154 !ym 155 ice_thermo = iflag_ice_thermo .GE. 1 147 156 zdelq=0.0 148 157 … … 188 197 ! 189 198 ztglace = RTT - 15.0 190 nexpo = 6 199 !AJ< 200 IF (ice_thermo) THEN 201 nexpo = 2 202 ELSE 203 nexpo = 6 204 ENDIF 205 !! RLVTT = 2.501e6 ! pas de redefinition des constantes physiques (jyg) 206 !! RLSTT = 2.834e6 ! pas de redefinition des constantes physiques (jyg) 207 !>AJ 191 208 !cc nexpo = 1 192 209 ! … … 223 240 ! DO i = 1, klon 224 241 zrfl(i) = 0.0 242 zifl(i) = 0.0 225 243 zneb(i) = seuil_neb 226 244 ENDDO … … 272 290 273 291 292 ! Calculer l'evaporation de la precipitation 293 ! 294 295 274 296 IF (evap_prec) THEN 275 297 DO i = 1, klon 276 IF (zrfl(i) .GT.0.) THEN 298 !AJ< 299 !! IF (zrfl(i) .GT.0.) THEN 300 IF (zrfl(i)+zifl(i).GT.0.) THEN 301 !>AJ 277 302 IF (thermcep) THEN 278 303 zdelta=MAX(0.,SIGN(1.,RTT-zt(i))) … … 288 313 ENDIF 289 314 ENDIF 290 zqev = MAX (0.0, (zqs(i)-zq(i))*zneb(i) ) 291 zqevt = coef_eva * (1.0-zq(i)/zqs(i)) * SQRT(zrfl(i)) & 292 * (paprs(i,k)-paprs(i,k+1))/pplay(i,k)*zt(i)*RD/RG 293 zqevt = MAX(0.0,MIN(zqevt,zrfl(i))) & 294 * RG*dtime/(paprs(i,k)-paprs(i,k+1)) 295 zqev = MIN (zqev, zqevt) 296 zrfln(i) = zrfl(i) - zqev*(paprs(i,k)-paprs(i,k+1)) & 297 /RG/dtime 298 299 ! pour la glace, on ré-évapore toute la précip dans la 300 ! couche du dessous 301 ! la glace venant de la couche du dessus est simplement 302 ! dans la couche du dessous. 303 304 IF (zt(i) .LT. t_coup.and.reevap_ice) zrfln(i)=0. 305 306 zq(i) = zq(i) - (zrfln(i)-zrfl(i)) & 307 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime 308 zt(i) = zt(i) + (zrfln(i)-zrfl(i)) & 309 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime & 310 * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) 311 zrfl(i) = zrfln(i) 312 ENDIF 313 ENDDO 314 ENDIF 315 ENDIF ! (zrfl(i)+zifl(i).GT.0.) 316 ENDDO 317 !AJ< 318 IF (.NOT. ice_thermo) THEN 319 DO i = 1, klon 320 !AJ< 321 !! IF (zrfl(i) .GT.0.) THEN 322 IF (zrfl(i)+zifl(i).GT.0.) THEN 323 !>AJ 324 zqev = MAX (0.0, (zqs(i)-zq(i))*zneb(i) ) 325 zqevt = coef_eva * (1.0-zq(i)/zqs(i)) * SQRT(zrfl(i)) & 326 * (paprs(i,k)-paprs(i,k+1))/pplay(i,k)*zt(i)*RD/RG 327 zqevt = MAX(0.0,MIN(zqevt,zrfl(i))) & 328 * RG*dtime/(paprs(i,k)-paprs(i,k+1)) 329 zqev = MIN (zqev, zqevt) 330 zrfln(i) = zrfl(i) - zqev*(paprs(i,k)-paprs(i,k+1)) & 331 /RG/dtime 332 333 ! pour la glace, on ré-évapore toute la précip dans la 334 ! couche du dessous 335 ! la glace venant de la couche du dessus est simplement 336 ! dans la couche du dessous. 337 338 IF (zt(i) .LT. t_coup.and.reevap_ice) zrfln(i)=0. 339 340 zq(i) = zq(i) - (zrfln(i)-zrfl(i)) & 341 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime 342 zt(i) = zt(i) + (zrfln(i)-zrfl(i)) & 343 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime & 344 * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) 345 zrfl(i) = zrfln(i) 346 zifl(i) = 0. 347 ENDIF ! (zrfl(i)+zifl(i).GT.0.) 348 ENDDO 349 ! 350 ELSE ! (.NOT. ice_thermo) 351 ! 352 DO i = 1, klon 353 !AJ< 354 !! IF (zrfl(i) .GT.0.) THEN 355 IF (zrfl(i)+zifl(i).GT.0.) THEN 356 !>AJ 357 !JAM !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 358 ! Modification de l'évaporation avec la glace 359 ! Différentiation entre précipitation liquide et solide 360 ! On suppose que coef_evai=2*coef_eva 361 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 362 363 zqev0 = MAX (0.0, (zqs(i)-zq(i))*zneb(i) ) 364 ! zqev0 = MAX (0.0, zqs(i)-zq(i) ) 365 366 !JAM !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 367 ! On différencie qsat pour l'eau et la glace 368 ! Si zdelta=1. --> glace 369 ! Si zdelta=0. --> eau liquide 370 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 371 372 qsl= R2ES*FOEEW(zt(i),0.)/pplay(i,k) 373 qsl= MIN(0.5,qsl) 374 zcor= 1./(1.-RETV*qsl) 375 qsl= qsl*zcor 376 377 zqevt = 1.*coef_eva*(1.0-zq(i)/qsl)*SQRT(zrfl(i)) & 378 *(paprs(i,k)-paprs(i,k+1))/pplay(i,k)*zt(i)*RD/RG 379 zqevt = MAX(0.0,MIN(zqevt,zrfl(i))) & 380 *RG*dtime/(paprs(i,k)-paprs(i,k+1)) 381 382 qsi= R2ES*FOEEW(zt(i),1.)/pplay(i,k) 383 qsi= MIN(0.5,qsi) 384 zcor= 1./(1.-RETV*qsi) 385 qsi= qsi*zcor 386 387 zqevti = 1.*coef_eva*(1.0-zq(i)/qsi)*SQRT(zifl(i)) & 388 *(paprs(i,k)-paprs(i,k+1))/pplay(i,k)*zt(i)*RD/RG 389 zqevti = MAX(0.0,MIN(zqevti,zifl(i))) & 390 *RG*dtime/(paprs(i,k)-paprs(i,k+1)) 391 392 393 !JAM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 394 ! Vérification sur l'évaporation 395 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 396 397 IF (zqevt+zqevti.GT.zqev0) THEN 398 zqev=zqev0*zqevt/(zqevt+zqevti) 399 zqevi=zqev0*zqevti/(zqevt+zqevti) 400 401 ELSE 402 IF (zqevt+zqevti.GT.0.) THEN 403 zqev=MIN(zqev0*zqevt/(zqevt+zqevti),zqevt) 404 zqevi=MIN(zqev0*zqevti/(zqevt+zqevti),zqevti) 405 ELSE 406 zqev=0. 407 zqevi=0. 408 ENDIF 409 ENDIF 410 411 zrfln(i) = Max(0.,zrfl(i) - zqev*(paprs(i,k)-paprs(i,k+1)) & 412 /RG/dtime) 413 zifln(i) = Max(0.,zifl(i) - zqevi*(paprs(i,k)-paprs(i,k+1)) & 414 /RG/dtime) 415 416 ! Pour la glace, on révapore toute la précip dans la couche du dessous 417 ! la glace venant de la couche du dessus est simplement dans la couche 418 ! du dessous. 419 420 ! IF (zt(i) .LT. t_coup.and.reevap_ice) zrfln(i)=0. 421 ! print*,zrfl(i),zrfln(i),zqevt,zqevti,RLMLT,'fluxdeprecip' 422 zq(i) = zq(i) - (zrfln(i)+zifln(i)-zrfl(i)-zifl(i)) & 423 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime 424 zt(i) = zt(i) + (zrfln(i)-zrfl(i)) & 425 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime & 426 * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) & 427 + (zifln(i)-zifl(i)) & 428 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime & 429 * RLSTT/RCPD/(1.0+RVTMP2*zq(i)) 430 431 zrfl(i) = zrfln(i) 432 zifl(i) = zifln(i) 433 434 ENDIF ! (zrfl(i)+zifl(i).GT.0.) 435 ENDDO 436 437 ENDIF ! (.NOT. ice_thermo) 438 439 ENDIF ! (evap_prec) 315 440 ! 316 441 ! Calculer Qs et L/Cp*dQs/dT: … … 478 603 zq(i) = zq(i) - zcond(i) 479 604 ! zt(i) = zt(i) + zcond(i) * RLVTT/RCPD 480 zt(i) = zt(i) + zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) 481 ENDDO 605 ENDDO 606 !AJ< 607 IF (.NOT. ice_thermo) THEN 608 DO i = 1, klon 609 zt(i) = zt(i) + zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) 610 ENDDO 611 ELSE 612 DO i = 1, klon 613 zfice(i) = 1.0 - (zt(i)-ztglace) / (273.15-ztglace) 614 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 615 zfice(i) = zfice(i)**nexpo 616 zt(i) = zt(i) + (1.-zfice(i))*zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) & 617 +zfice(i)*zcond(i) * RLSTT/RCPD/(1.0+RVTMP2*zq(i)) 618 ! print*,zt(i),zrfl(i),zifl(i),'temp1' 619 ENDDO 620 ENDIF 621 !>AJ 482 622 ! 483 623 ! Partager l'eau condensee en precipitation et eau liquide nuageuse … … 488 628 zrho(i) = pplay(i,k) / zt(i) / RD 489 629 zdz(i) = (paprs(i,k)-paprs(i,k+1)) / (zrho(i)*RG) 630 ENDIF 631 ENDDO 632 !AJ< 633 IF (.NOT. ice_thermo) THEN 634 DO i = 1, klon 635 IF (rneb(i,k).GT.0.0) THEN 490 636 zfice(i) = 1.0 - (zt(i)-ztglace) / (273.13-ztglace) 491 637 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 492 638 zfice(i) = zfice(i)**nexpo 639 !! zfice(i)=0. 640 ENDIF 641 ENDDO 642 ENDIF 643 DO i = 1, klon 644 IF (rneb(i,k).GT.0.0) THEN 493 645 zneb(i) = MAX(rneb(i,k), seuil_neb) 646 ! zt(i) = zt(i)+zcond(i)*zfice(i)*RLMLT/RCPD/(1.0+RVTMP2*zq(i)) 647 ! print*,zt(i),'fractionglace' 648 !>AJ 494 649 radliq(i,k) = zoliq(i)/REAL(ninter+1) 495 650 ENDIF … … 500 655 IF (rneb(i,k).GT.0.0) THEN 501 656 zrhol(i) = zrho(i) * zoliq(i) / zneb(i) 502 657 ! Initialization of zpluie and zice: 658 zpluie=0 659 zice=0 503 660 IF (zneb(i).EQ.seuil_neb) THEN 504 661 ztot = 0.0 … … 519 676 zchau = zct *dtime/REAL(ninter) * zoliq(i) & 520 677 *(1.0-EXP(-(zoliq(i)/zneb(i)/zcl )**2)) *(1.-zfice(i)) 521 ztot = zchau + zfroi 678 !AJ< 679 IF (.NOT. ice_thermo) THEN 680 ztot = zchau + zfroi 681 ELSE 682 zpluie = MIN(MAX(zchau,0.0),zoliq(i)*(1.-zfice(i))) 683 zice = MIN(MAX(zfroi,0.0),zoliq(i)*zfice(i)) 684 ztot = zpluie + zice 685 ENDIF 686 !>AJ 522 687 ztot = MAX(ztot ,0.0) 523 688 ENDIF 524 689 ztot = MIN(ztot,zoliq(i)) 690 !AJ< 691 ! zoliqp = MAX(zoliq(i)*(1.-zfice(i))-1.*zpluie , 0.0) 692 ! zoliqi = MAX(zoliq(i)*zfice(i)-1.*zice , 0.0) 693 zoliqp(i) = MAX(zoliq(i)*(1.-zfice(i))-1.*zpluie , 0.0) 694 zoliqi(i) = MAX(zoliq(i)*zfice(i)-1.*zice , 0.0) 525 695 zoliq(i) = MAX(zoliq(i)-ztot , 0.0) 696 !>AJ 526 697 radliq(i,k) = radliq(i,k) + zoliq(i)/REAL(ninter+1) 527 698 ENDIF … … 529 700 ENDDO 530 701 ! 531 DO i = 1, klon 532 IF (rneb(i,k).GT.0.0) THEN 702 IF (.NOT. ice_thermo) THEN 703 DO i = 1, klon 704 IF (rneb(i,k).GT.0.0) THEN 533 705 d_ql(i,k) = zoliq(i) 534 706 zrfl(i) = zrfl(i)+ MAX(zcond(i)-zoliq(i),0.0) & 535 707 * (paprs(i,k)-paprs(i,k+1))/(RG*dtime) 536 ENDIF 537 IF (zt(i).LT.RTT) THEN 708 ENDIF 709 ENDDO 710 ELSE 711 DO i = 1, klon 712 IF (rneb(i,k).GT.0.0) THEN 713 d_ql(i,k) = zoliq(i) 714 !AJ< 715 zrfl(i) = zrfl(i)+ MAX(zcond(i)*(1.-zfice(i))-zoliqp(i),0.0) & 716 *(paprs(i,k)-paprs(i,k+1))/(RG*dtime) 717 zifl(i) = zifl(i)+ MAX(zcond(i)*zfice(i)-zoliqi(i),0.0) & 718 *(paprs(i,k)-paprs(i,k+1))/(RG*dtime) 719 ! zrfl(i) = zrfl(i)+ zpluie & 720 ! *(paprs(i,k)-paprs(i,k+1))/(RG*dtime) 721 ! zifl(i) = zifl(i)+ zice & 722 ! *(paprs(i,k)-paprs(i,k+1))/(RG*dtime) 723 724 ENDIF 725 ENDDO 726 ENDIF 727 728 IF (ice_thermo) THEN 729 DO i = 1, klon 730 zmelt = ((zt(i)-273.15)/(ztfondue-273.15))**2 731 zmelt = MIN(MAX(zmelt,0.),1.) 732 zrfl(i)=zrfl(i)+zmelt*zifl(i) 733 zifl(i)=zifl(i)*(1.-zmelt) 734 ! print*,zt(i),'octavio1' 735 zt(i)=zt(i)-zifl(i)*zmelt*(RG*dtime)/(paprs(i,k)-paprs(i,k+1)) & 736 *RLMLT/RCPD/(1.0+RVTMP2*zq(i)) 737 ! print*,zt(i),zrfl(i),zifl(i),zmelt,'octavio2' 738 ENDDO 739 ENDIF 740 741 742 IF (.NOT. ice_thermo) THEN 743 DO i = 1, klon 744 IF (zt(i).LT.RTT) THEN 538 745 psfl(i,k)=zrfl(i) 539 ELSE746 ELSE 540 747 prfl(i,k)=zrfl(i) 541 ENDIF 542 ENDDO 748 ENDIF 749 ENDDO 750 ELSE 751 ! JAM************************************************* 752 ! Revoir partie ci-dessous: à quoi servent psfl et prfl? 753 ! ***************************************************** 754 755 DO i = 1, klon 756 ! IF (zt(i).LT.RTT) THEN 757 psfl(i,k)=zifl(i) 758 ! ELSE 759 prfl(i,k)=zrfl(i) 760 ! ENDIF 761 !>AJ 762 ENDDO 763 ENDIF 764 ! 543 765 ! 544 766 ! Calculer les tendances de q et de t: … … 604 826 DO i = 1, klon 605 827 IF ((t(i,1)+d_t(i,1)) .LT. RTT) THEN 606 snow(i) = zrfl(i) 828 !AJ< 829 !! snow(i) = zrfl(i) 830 snow(i) = zrfl(i)+zifl(i) 831 !>AJ 607 832 zlh_solid(i) = RLSTT-RLVTT 608 833 ELSE -
LMDZ5/branches/testing/libf/phylmd/hbtm.F
r1279 r1864 4 4 5 5 SUBROUTINE HBTM(knon, paprs, pplay, 6 . t2m,t10m,q2m,q10m,ustar, 6 . t2m,t10m,q2m,q10m,ustar,wstar, 7 7 . flux_t,flux_q,u,v,t,q, 8 8 . pblh,cape,EauLiq,ctei,pblT, … … 54 54 REAL q2m(klon), q10m(klon) ! q a 2 et 10m 55 55 REAL ustar(klon) 56 REAL wstar(klon) ! w*, convective velocity scale 56 57 REAL paprs(klon,klev+1) ! pression a inter-couche (Pa) 57 58 REAL pplay(klon,klev) ! pression au milieu de couche (Pa) … … 158 159 REAL fak1(klon) ! k*ustar*pblh 159 160 REAL fak2(klon) ! k*wm*pblh 160 REAL fak3(klon) ! fakn*wst r/wm161 REAL fak3(klon) ! fakn*wstar/wm 161 162 REAL pblk(klon) ! level eddy diffusivity for momentum 162 163 REAL pr(klon) ! Prandtl number for eddy diffusivities … … 164 165 REAL zh(klon) ! zmzp / pblh 165 166 REAL zzh(klon) ! (1-(zmzp/pblh))**2 166 REAL wstr(klon) ! w*, convective velocity scale167 167 REAL zm(klon) ! current level height 168 168 REAL zp(klon) ! current level height + one level up … … 625 625 wm(i) = ustar(i)*phiminv(i) 626 626 fak2(i) = wm(i)*pblh(i)*vk 627 wstr(i) = (heatv(i)*RG*pblh(i)/zxt)**onet 628 fak3(i) = fakn*wstr(i)/wm(i) 627 wstar(i) = (heatv(i)*RG*pblh(i)/zxt)**onet 628 fak3(i) = fakn*wstar(i)/wm(i) 629 ELSE 630 wstar(i)=0. 629 631 ENDIF 630 632 c Computes Theta_e for thermal (all cases : to be modified) -
LMDZ5/branches/testing/libf/phylmd/ini_histrac.h
r1750 r1864 147 147 148 148 ! TD COUCHE-LIMITE 149 IF ( couchelimite) THEN149 IF (iflag_vdf_trac>=0) THEN 150 150 CALL histdef(nid_tra, "d_tr_cl_"//tname(iiq), & 151 151 "tendance couche limite"// ttext(iiq), "?", & -
LMDZ5/branches/testing/libf/phylmd/iniphysiq.F
r1707 r1864 14 14 & klon_omp_end,klon_mpi_begin 15 15 USE comgeomphy, only : airephy,cuphy,cvphy,rlond,rlatd 16 16 USE phyaqua_mod, only: iniaqua 17 17 IMPLICIT NONE 18 18 c -
LMDZ5/branches/testing/libf/phylmd/iophy.F90
r1795 r1864 2 2 ! $Header$ 3 3 ! 4 module iophy 5 6 ! abd REAL,private,allocatable,dimension(:),save :: io_lat 7 ! abd REAL,private,allocatable,dimension(:),save :: io_lon 4 MODULE iophy 5 6 USE phys_output_var_mod 7 #ifdef CPP_XIOS 8 USE wxios 9 #endif 10 11 #ifdef CPP_XIOS 12 USE wxios 13 #endif 14 15 ! abd REAL,private,allocatable,DIMENSION(:),save :: io_lat 16 ! abd REAL,private,allocatable,DIMENSION(:),save :: io_lon 8 17 REAL,ALLOCATABLE,DIMENSION(:),SAVE :: io_lat 9 18 REAL,ALLOCATABLE,DIMENSION(:),SAVE :: io_lon … … 14 23 15 24 !$OMP THREADPRIVATE(itau_iophy) 16 25 26 #ifdef CPP_XIOS 27 INTERFACE histwrite_phy 28 MODULE PROCEDURE histwrite2d_phy,histwrite3d_phy,histwrite2d_phy_old,histwrite3d_phy_old,histwrite2d_xios,histwrite3d_xios 29 END INTERFACE 30 #else 17 31 INTERFACE histwrite_phy 18 32 MODULE PROCEDURE histwrite2d_phy,histwrite3d_phy,histwrite2d_phy_old,histwrite3d_phy_old 19 33 END INTERFACE 34 #endif 20 35 21 36 INTERFACE histbeg_phy_all 22 MODULE PROCEDURE histbeg_phy,histbeg_phy _points37 MODULE PROCEDURE histbeg_phy,histbeg_phyxios,histbeg_phy_points 23 38 END INTERFACE 24 39 25 40 26 contains 27 28 subroutine init_iophy_new(rlat,rlon) 41 CONTAINS 42 43 ! ug Routine pour définir itau_iophy depuis phys_output_write_mod: 44 SUBROUTINE set_itau_iophy(ito) 45 IMPLICIT NONE 46 INTEGER, INTENT(IN) :: ito 47 itau_iophy = ito 48 END SUBROUTINE 49 50 SUBROUTINE init_iophy_new(rlat,rlon) 29 51 USE dimphy 30 52 USE mod_phys_lmdz_para 31 53 USE mod_grid_phy_lmdz 32 54 USE ioipsl 33 implicit none 34 include 'dimensions.h' 35 real,dimension(klon),intent(in) :: rlon 36 real,dimension(klon),intent(in) :: rlat 37 38 REAL,dimension(klon_glo) :: rlat_glo 39 REAL,dimension(klon_glo) :: rlon_glo 55 56 IMPLICIT NONE 57 INCLUDE 'dimensions.h' 58 REAL,DIMENSION(klon),INTENT(IN) :: rlon 59 REAL,DIMENSION(klon),INTENT(IN) :: rlat 60 61 REAL,DIMENSION(klon_glo) :: rlat_glo 62 REAL,DIMENSION(klon_glo) :: rlon_glo 40 63 41 64 INTEGER,DIMENSION(2) :: ddid … … 47 70 INTEGER,DIMENSION(2) :: dhe 48 71 INTEGER :: i 72 INTEGER :: data_ibegin, data_iend 49 73 50 74 CALL gather(rlat,rlat_glo) … … 65 89 ALLOCATE(io_lon(iim)) 66 90 io_lon(:)=rlon_glo(2-1/(iim*jjm):iim+1-1/(iim*jjm)) 91 !! (I) dtnb : total number of domains 92 !! (I) dnb : domain number 93 !! (I) did(:) : distributed dimensions identifiers 94 !! (up to 5 dimensions are supported) 95 !! (I) dsg(:) : total number of points for each dimension 96 !! (I) dsl(:) : local number of points for each dimension 97 !! (I) dpf(:) : position of first local point for each dimension 98 !! (I) dpl(:) : position of last local point for each dimension 99 !! (I) dhs(:) : start halo size for each dimension 100 !! (I) dhe(:) : end halo size for each dimension 101 !! (C) cdnm : Model domain definition name. 102 !! The names actually supported are : 103 !! "BOX", "APPLE", "ORANGE". 104 !! These names are case insensitive. 67 105 68 106 ddid=(/ 1,2 /) … … 72 110 dpl=(/ iim, jj_end /) 73 111 dhs=(/ ii_begin-1,0 /) 74 if (mpi_rank==mpi_size-1) then112 IF (mpi_rank==mpi_size-1) THEN 75 113 dhe=(/0,0/) 76 else114 ELSE 77 115 dhe=(/ iim-ii_end,0 /) 78 endif 79 80 call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, & 116 ENDIF 117 118 #ifndef CPP_NO_IOIPSL 119 CALL flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, & 81 120 'APPLE',phys_domain_id) 82 121 #endif 122 #ifdef CPP_XIOS 123 !Pour els soucis en MPI, réglage du masque: 124 IF (mpi_rank == 0) THEN 125 data_ibegin = 0 126 ELSE 127 data_ibegin = ii_begin - 1 128 END IF 129 130 IF (mpi_rank == mpi_size-1) THEN 131 data_iend = nbp_lon 132 ELSE 133 data_iend = ii_end + 1 134 END IF 135 136 WRITE(*,*) "TOTO mpirank=",mpi_rank,"iibeg=",ii_begin , "jjbeg=",jj_begin,"jjnb=",jj_nb,"jjend=",jj_end 137 138 !On initialise le domaine xios, maintenant que tout est connu: 139 !SUBROUTINE wxios_domain_param(dom_id, is_sequential, ni, nj, ni_glo, nj_glo, & 140 ! ibegin, iend, jbegin, jend, & 141 ! data_ni, data_ibegin, & 142 ! io_lat, io_lon) 143 CALL wxios_domain_param("dom_glo", is_sequential, nbp_lon, jj_nb, nbp_lon, nbp_lat, & 144 1, nbp_lon, ii_begin, ii_end, jj_begin, jj_end, & 145 klon_mpi+2*(nbp_lon-1), data_ibegin, data_iend, & 146 io_lat, io_lon) 147 #endif 83 148 !$OMP END MASTER 84 149 85 end subroutineinit_iophy_new86 87 subroutineinit_iophy(lat,lon)150 END SUBROUTINE init_iophy_new 151 152 SUBROUTINE init_iophy(lat,lon) 88 153 USE dimphy 89 154 USE mod_phys_lmdz_para 90 useioipsl91 implicit none92 include'dimensions.h'93 real,dimension(iim),intent(in) :: lon94 real,dimension(jjm+1-1/(iim*jjm)),intent(in) :: lat155 USE ioipsl 156 IMPLICIT NONE 157 INCLUDE 'dimensions.h' 158 REAL,DIMENSION(iim),INTENT(IN) :: lon 159 REAL,DIMENSION(jjm+1-1/(iim*jjm)),INTENT(IN) :: lat 95 160 96 161 INTEGER,DIMENSION(2) :: ddid … … 120 185 endif 121 186 187 #ifndef CPP_NO_IOIPSL 122 188 call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, & 123 189 'APPLE',phys_domain_id) 124 190 #endif 125 191 !$OMP END MASTER 126 192 127 end subroutineinit_iophy128 129 subroutine histbeg_phy(name,itau0,zjulian,dtime,nhori,nid_day)193 end SUBROUTINE init_iophy 194 195 SUBROUTINE histbeg_phyxios(name,itau0,zjulian,dtime,ffreq,lev,nhori,nid_day) 130 196 USE dimphy 131 197 USE mod_phys_lmdz_para 132 198 use ioipsl 133 199 use write_field 134 implicit none200 IMPLICIT NONE 135 201 include 'dimensions.h' 136 202 137 character*(*), intent(IN) :: name 138 integer, intent(in) :: itau0 139 real,intent(in) :: zjulian 140 real,intent(in) :: dtime 203 character*(*), INTENT(IN) :: name 204 integer, INTENT(IN) :: itau0 205 REAL,INTENT(IN) :: zjulian 206 REAL,INTENT(IN) :: dtime 207 character(LEN=*), INTENT(IN) :: ffreq 208 INTEGER,INTENT(IN) :: lev 141 209 integer,intent(out) :: nhori 142 210 integer,intent(out) :: nid_day … … 150 218 1,iim,1,jj_nb,itau0, zjulian, dtime, nhori, nid_day,phys_domain_id) 151 219 endif 220 221 #ifdef CPP_XIOS 222 ! ug OMP en chantier... 223 IF((.NOT. is_using_mpi) .OR. is_mpi_root) THEN 224 ! ug Création du fichier 225 CALL wxios_add_file(name, ffreq, lev) 226 END IF 227 #endif 152 228 !$OMP END MASTER 153 229 154 end subroutine histbeg_phy 155 156 subroutine histbeg_phy_points(rlon,rlat,pim,tabij,ipt,jpt, & 230 END SUBROUTINE histbeg_phyxios 231 232 SUBROUTINE histbeg_phy(name,itau0,zjulian,dtime,nhori,nid_day) 233 USE dimphy 234 USE mod_phys_lmdz_para 235 use ioipsl 236 use write_field 237 IMPLICIT NONE 238 include 'dimensions.h' 239 240 character*(*), INTENT(IN) :: name 241 integer, INTENT(IN) :: itau0 242 REAL,INTENT(IN) :: zjulian 243 REAL,INTENT(IN) :: dtime 244 integer,intent(out) :: nhori 245 integer,intent(out) :: nid_day 246 247 !$OMP MASTER 248 #ifndef CPP_NO_IOIPSL 249 if (is_sequential) then 250 call histbeg(name,iim,io_lon, jj_nb,io_lat(jj_begin:jj_end), & 251 1,iim,1,jj_nb,itau0, zjulian, dtime, nhori, nid_day) 252 else 253 call histbeg(name,iim,io_lon, jj_nb,io_lat(jj_begin:jj_end), & 254 1,iim,1,jj_nb,itau0, zjulian, dtime, nhori, nid_day,phys_domain_id) 255 endif 256 #endif 257 !$OMP END MASTER 258 259 END SUBROUTINE histbeg_phy 260 261 262 SUBROUTINE histbeg_phy_points(rlon,rlat,pim,tabij,ipt,jpt, & 157 263 plon,plat,plon_bounds,plat_bounds, & 158 264 nname,itau0,zjulian,dtime,nnhori,nnid_day) … … 162 268 use ioipsl 163 269 use write_field 164 implicit none270 IMPLICIT NONE 165 271 include 'dimensions.h' 166 272 167 real,dimension(klon),intent(in) :: rlon168 real,dimension(klon),intent(in) :: rlat169 integer, intent(in) :: itau0170 real,intent(in) :: zjulian171 real,intent(in) :: dtime172 integer, intent(in) :: pim273 REAL,DIMENSION(klon),INTENT(IN) :: rlon 274 REAL,DIMENSION(klon),INTENT(IN) :: rlat 275 integer, INTENT(IN) :: itau0 276 REAL,INTENT(IN) :: zjulian 277 REAL,INTENT(IN) :: dtime 278 integer, INTENT(IN) :: pim 173 279 integer, intent(out) :: nnhori 174 character(len=20), intent(in) :: nname280 character(len=20), INTENT(IN) :: nname 175 281 INTEGER, intent(out) :: nnid_day 176 282 integer :: i 177 REAL, dimension(klon_glo) :: rlat_glo178 REAL, dimension(klon_glo) :: rlon_glo179 INTEGER, DIMENSION(pim), intent(in) :: tabij180 REAL, dimension(pim), intent(in) :: plat, plon181 INTEGER, dimension(pim), intent(in) :: ipt, jpt182 REAL, dimension(pim,2), intent(out) :: plat_bounds, plon_bounds283 REAL,DIMENSION(klon_glo) :: rlat_glo 284 REAL,DIMENSION(klon_glo) :: rlon_glo 285 INTEGER, DIMENSION(pim), INTENT(IN) :: tabij 286 REAL,DIMENSION(pim), INTENT(IN) :: plat, plon 287 INTEGER,DIMENSION(pim), INTENT(IN) :: ipt, jpt 288 REAL,DIMENSION(pim,2), intent(out) :: plat_bounds, plon_bounds 183 289 184 290 INTEGER, SAVE :: tabprocbeg, tabprocend … … 187 293 INTEGER, PARAMETER :: nip=1 188 294 INTEGER :: npproc 189 REAL, allocatable, dimension(:) :: npplat, npplon190 REAL, allocatable, dimension(:,:) :: npplat_bounds, npplon_bounds295 REAL, allocatable, DIMENSION(:) :: npplat, npplon 296 REAL, allocatable, DIMENSION(:,:) :: npplat_bounds, npplon_bounds 191 297 INTEGER, PARAMETER :: jjmp1=jjm+1-1/jjm 192 REAL, dimension(iim,jjmp1) :: zx_lon, zx_lat298 REAL, DIMENSION(iim,jjmp1) :: zx_lon, zx_lat 193 299 194 300 CALL gather(rlat,rlat_glo) … … 278 384 ENDDO 279 385 ! print*,'iophy is_sequential nname, nnhori, nnid_day=',trim(nname),nnhori,nnid_day 386 #ifndef CPP_NO_IOIPSL 280 387 call histbeg(nname,pim,plon,plon_bounds, & 281 388 plat,plat_bounds, & 282 389 itau0, zjulian, dtime, nnhori, nnid_day) 390 #endif 283 391 else 284 392 npproc=0 … … 317 425 ENDIF 318 426 ENDDO 427 #ifndef CPP_NO_IOIPSL 319 428 call histbeg(nname,npstn,npplon,npplon_bounds, & 320 429 npplat,npplat_bounds, & 321 430 itau0,zjulian,dtime,nnhori,nnid_day,phys_domain_id) 431 #endif 322 432 endif 323 433 !$OMP END MASTER 324 434 325 end subroutine histbeg_phy_points 435 end SUBROUTINE histbeg_phy_points 436 437 438 SUBROUTINE histdef2d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 439 440 USE ioipsl 441 USE dimphy 442 USE mod_phys_lmdz_para 443 444 IMPLICIT NONE 445 446 INCLUDE "dimensions.h" 447 INCLUDE "temps.h" 448 INCLUDE "clesphys.h" 449 450 INTEGER :: iff 451 LOGICAL :: lpoint 452 INTEGER, DIMENSION(nfiles) :: flag_var 453 CHARACTER(LEN=20) :: nomvar 454 CHARACTER(LEN=*) :: titrevar 455 CHARACTER(LEN=*) :: unitvar 456 457 REAL zstophym 458 459 IF (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') THEN 460 zstophym=zoutm(iff) 461 ELSE 462 zstophym=zdtime_moy 463 ENDIF 464 465 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 466 CALL conf_physoutputs(nomvar,flag_var) 467 468 IF(.NOT.lpoint) THEN 469 IF ( flag_var(iff)<=lev_files(iff) ) THEN 470 CALL histdef (nid_files(iff),nomvar,titrevar,unitvar, & 471 iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & 472 type_ecri(iff), zstophym,zoutm(iff)) 473 ENDIF 474 ELSE 475 IF ( flag_var(iff)<=lev_files(iff) ) THEN 476 CALL histdef (nid_files(iff),nomvar,titrevar,unitvar, & 477 npstn,1,nhorim(iff), 1,1,1, -99, 32, & 478 type_ecri(iff), zstophym,zoutm(iff)) 479 ENDIF 480 ENDIF 481 482 ! Set swaero_diag=true if at least one of the concerned variables are defined 483 IF (nomvar=='topswad' .OR. nomvar=='topswai' .OR. nomvar=='solswad' .OR. nomvar=='solswai' ) THEN 484 IF ( flag_var(iff)<=lev_files(iff) ) THEN 485 swaero_diag=.TRUE. 486 END IF 487 END IF 488 END SUBROUTINE histdef2d_old 489 490 491 492 SUBROUTINE histdef3d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 493 494 USE ioipsl 495 USE dimphy 496 USE mod_phys_lmdz_para 497 498 IMPLICIT NONE 499 500 INCLUDE "dimensions.h" 501 INCLUDE "temps.h" 502 ! INCLUDE "indicesol.h" 503 INCLUDE "clesphys.h" 504 505 INTEGER :: iff 506 LOGICAL :: lpoint 507 INTEGER, DIMENSION(nfiles) :: flag_var 508 CHARACTER(LEN=20) :: nomvar 509 CHARACTER(LEN=*) :: titrevar 510 CHARACTER(LEN=*) :: unitvar 511 512 REAL zstophym 513 514 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 515 CALL conf_physoutputs(nomvar,flag_var) 516 517 IF (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') THEN 518 zstophym=zoutm(iff) 519 ELSE 520 zstophym=zdtime_moy 521 ENDIF 522 523 IF(.NOT.lpoint) THEN 524 IF ( flag_var(iff)<=lev_files(iff) ) THEN 525 CALL histdef (nid_files(iff), nomvar, titrevar, unitvar, & 526 iim, jj_nb, nhorim(iff), klev, levmin(iff), & 527 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, type_ecri(iff), & 528 zstophym, zoutm(iff)) 529 ENDIF 530 ELSE 531 IF ( flag_var(iff)<=lev_files(iff) ) THEN 532 CALL histdef (nid_files(iff), nomvar, titrevar, unitvar, & 533 npstn,1,nhorim(iff), klev, levmin(iff), & 534 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, & 535 type_ecri(iff), zstophym,zoutm(iff)) 536 ENDIF 537 ENDIF 538 END SUBROUTINE histdef3d_old 539 540 541 542 543 544 545 546 547 SUBROUTINE histdef2d (iff,var) 548 549 USE ioipsl 550 USE dimphy 551 USE mod_phys_lmdz_para 552 553 IMPLICIT NONE 554 555 INCLUDE "dimensions.h" 556 INCLUDE "temps.h" 557 INCLUDE "clesphys.h" 558 559 INTEGER :: iff 560 TYPE(ctrl_out) :: var 561 562 REAL zstophym 563 CHARACTER(LEN=20) :: typeecrit 564 565 566 ! ug On récupère le type écrit de la structure: 567 ! Assez moche, à refaire si meilleure méthode... 568 IF (INDEX(var%type_ecrit(iff), "once") > 0) THEN 569 typeecrit = 'once' 570 ELSE IF(INDEX(var%type_ecrit(iff), "t_min") > 0) THEN 571 typeecrit = 't_min(X)' 572 ELSE IF(INDEX(var%type_ecrit(iff), "t_max") > 0) THEN 573 typeecrit = 't_max(X)' 574 ELSE IF(INDEX(var%type_ecrit(iff), "inst") > 0) THEN 575 typeecrit = 'inst(X)' 576 ELSE 577 typeecrit = type_ecri_files(iff) 578 ENDIF 579 580 IF (typeecrit=='inst(X)'.OR.typeecrit=='once') THEN 581 zstophym=zoutm(iff) 582 ELSE 583 zstophym=zdtime_moy 584 ENDIF 585 586 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 587 CALL conf_physoutputs(var%name, var%flag) 588 589 IF(.NOT.clef_stations(iff)) THEN 590 591 #ifdef CPP_XIOS 592 CALL wxios_add_field_to_file(var%name, 2, iff, phys_out_filenames(iff), & 593 var%description, var%unit, var%flag(iff), typeecrit) 594 #endif 595 #ifndef CPP_NO_IOIPSL 596 597 IF ( var%flag(iff)<=lev_files(iff) ) THEN 598 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 599 iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & 600 typeecrit, zstophym,zoutm(iff)) 601 ENDIF 602 ELSE 603 IF ( var%flag(iff)<=lev_files(iff)) THEN 604 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 605 npstn,1,nhorim(iff), 1,1,1, -99, 32, & 606 typeecrit, zstophym,zoutm(iff)) 607 ENDIF 608 #endif 609 ENDIF 610 611 ! Set swaero_diag=true if at least one of the concerned variables are defined 612 IF (var%name=='topswad' .OR. var%name=='topswai' .OR. var%name=='solswad' .OR. var%name=='solswai' ) THEN 613 IF ( var%flag(iff)<=lev_files(iff) ) THEN 614 swaero_diag=.TRUE. 615 END IF 616 END IF 617 END SUBROUTINE histdef2d 618 SUBROUTINE histdef3d (iff,var) 619 620 USE ioipsl 621 USE dimphy 622 USE mod_phys_lmdz_para 623 624 IMPLICIT NONE 625 626 INCLUDE "dimensions.h" 627 INCLUDE "temps.h" 628 INCLUDE "clesphys.h" 629 630 INTEGER :: iff 631 TYPE(ctrl_out) :: var 632 633 REAL zstophym 634 CHARACTER(LEN=20) :: typeecrit 635 636 ! ug On récupère le type écrit de la structure: 637 ! Assez moche, à refaire si meilleure méthode... 638 IF (INDEX(var%type_ecrit(iff), "once") > 0) THEN 639 typeecrit = 'once' 640 ELSE IF(INDEX(var%type_ecrit(iff), "t_min") > 0) THEN 641 typeecrit = 't_min(X)' 642 ELSE IF(INDEX(var%type_ecrit(iff), "t_max") > 0) THEN 643 typeecrit = 't_max(X)' 644 ELSE IF(INDEX(var%type_ecrit(iff), "inst") > 0) THEN 645 typeecrit = 'inst(X)' 646 ELSE 647 typeecrit = type_ecri_files(iff) 648 ENDIF 649 650 651 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 652 CALL conf_physoutputs(var%name,var%flag) 653 654 IF (typeecrit=='inst(X)'.OR.typeecrit=='once') THEN 655 zstophym=zoutm(iff) 656 ELSE 657 zstophym=zdtime_moy 658 ENDIF 659 660 IF(.NOT.clef_stations(iff)) THEN 661 662 #ifdef CPP_XIOS 663 CALL wxios_add_field_to_file(var%name, 3, iff, phys_out_filenames(iff), & 664 var%description, var%unit, var%flag(iff), typeecrit) 665 #endif 666 #ifndef CPP_NO_IOIPSL 667 668 IF ( var%flag(iff)<=lev_files(iff) ) THEN 669 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 670 iim, jj_nb, nhorim(iff), klev, levmin(iff), & 671 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, typeecrit, & 672 zstophym, zoutm(iff)) 673 ENDIF 674 ELSE 675 IF ( var%flag(iff)<=lev_files(iff)) THEN 676 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 677 npstn,1,nhorim(iff), klev, levmin(iff), & 678 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, & 679 typeecrit, zstophym,zoutm(iff)) 680 ENDIF 681 #endif 682 ENDIF 683 END SUBROUTINE histdef3d 684 685 SUBROUTINE conf_physoutputs(nam_var,flag_var) 686 !!! Lecture des noms et niveau de sortie des variables dans output.def 687 ! en utilisant les routines getin de IOIPSL 688 use ioipsl 689 690 IMPLICIT NONE 691 692 include 'iniprint.h' 693 694 CHARACTER(LEN=20) :: nam_var 695 INTEGER, DIMENSION(nfiles) :: flag_var 696 697 IF(prt_level>10) WRITE(lunout,*)'Avant getin: nam_var flag_var ',nam_var,flag_var(:) 698 CALL getin('flag_'//nam_var,flag_var) 699 CALL getin('name_'//nam_var,nam_var) 700 IF(prt_level>10) WRITE(lunout,*)'Apres getin: nam_var flag_var ',nam_var,flag_var(:) 701 702 END SUBROUTINE conf_physoutputs 703 704 326 705 327 706 SUBROUTINE histwrite2d_phy_old(nid,lpoint,name,itau,field) 328 707 USE dimphy 329 708 USE mod_phys_lmdz_para 330 USE phys_output_var_mod331 709 USE ioipsl 332 710 IMPLICIT NONE … … 334 712 include 'iniprint.h' 335 713 336 integer, intent(in) :: nid337 logical, intent(in) :: lpoint338 character*(*), intent(IN) :: name339 integer, intent(in) :: itau340 real,dimension(:),intent(in) :: field341 REAL, dimension(klon_mpi) :: buffer_omp342 INTEGER, allocatable, dimension(:) :: index2d714 integer,INTENT(IN) :: nid 715 logical,INTENT(IN) :: lpoint 716 character*(*), INTENT(IN) :: name 717 integer, INTENT(IN) :: itau 718 REAL,DIMENSION(:),INTENT(IN) :: field 719 REAL,DIMENSION(klon_mpi) :: buffer_omp 720 INTEGER, allocatable, DIMENSION(:) :: index2d 343 721 REAL :: Field2d(iim,jj_nb) 344 722 345 723 integer :: ip 346 real,allocatable,dimension(:) :: fieldok347 348 349 IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first dimensionnot equal to klon',1)724 REAL,allocatable,DIMENSION(:) :: fieldok 725 726 727 IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first DIMENSION not equal to klon',1) 350 728 351 729 CALL Gather_omp(field,buffer_omp) … … 387 765 388 766 389 end subroutinehistwrite2d_phy_old390 391 subroutinehistwrite3d_phy_old(nid,lpoint,name,itau,field)767 end SUBROUTINE histwrite2d_phy_old 768 769 SUBROUTINE histwrite3d_phy_old(nid,lpoint,name,itau,field) 392 770 USE dimphy 393 771 USE mod_phys_lmdz_para 394 USE phys_output_var_mod395 772 396 773 use ioipsl 397 implicit none774 IMPLICIT NONE 398 775 include 'dimensions.h' 399 776 include 'iniprint.h' 400 777 401 integer, intent(in) :: nid402 logical, intent(in) :: lpoint403 character*(*), intent(IN) :: name404 integer, intent(in) :: itau405 real,dimension(:,:),intent(in) :: field ! --> field(klon,:)406 REAL, dimension(klon_mpi,size(field,2)) :: buffer_omp778 integer,INTENT(IN) :: nid 779 logical,INTENT(IN) :: lpoint 780 character*(*), INTENT(IN) :: name 781 integer, INTENT(IN) :: itau 782 REAL,DIMENSION(:,:),INTENT(IN) :: field ! --> field(klon,:) 783 REAL,DIMENSION(klon_mpi,size(field,2)) :: buffer_omp 407 784 REAL :: Field3d(iim,jj_nb,size(field,2)) 408 785 INTEGER :: ip, n, nlev 409 INTEGER, ALLOCATABLE, dimension(:) :: index3d410 real,allocatable, dimension(:,:) :: fieldok411 412 413 IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first dimensionnot equal to klon',1)786 INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d 787 REAL,allocatable, DIMENSION(:,:) :: fieldok 788 789 790 IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1) 414 791 nlev=size(field,2) 415 792 … … 460 837 !$OMP END MASTER 461 838 462 end subroutine histwrite3d_phy_old 839 end SUBROUTINE histwrite3d_phy_old 840 841 463 842 464 843 … … 468 847 USE mod_phys_lmdz_para 469 848 USE ioipsl 470 !Pour avoir nfiles, nidfiles tout ça tout ça...471 USE phys_output_var_mod472 849 473 850 474 851 475 852 #ifdef CPP_XIOS 476 ! USE WXIOS 477 #endif 853 USE wxios 854 #endif 855 478 856 479 857 IMPLICIT NONE 480 include 'dimensions.h' 481 482 ! integer,intent(in) :: nid 483 ! logical,intent(in) :: lpoint 484 ! character*(*), intent(IN) :: name 485 ! integer, intent(in) :: itau 486 ! real,dimension(:),intent(in) :: field 487 488 TYPE(ctrl_out), INTENT(IN) :: var 489 REAL, DIMENSION(:), INTENT(IN) :: field 490 INTEGER, INTENT(IN), OPTIONAL :: STD_iff ! ug RUSTINE POUR LES STD LEVS..... 858 INCLUDE 'dimensions.h' 859 INCLUDE 'iniprint.h' 860 861 TYPE(ctrl_out), INTENT(IN) :: var 862 REAL, DIMENSION(:), INTENT(IN) :: field 863 INTEGER, INTENT(IN), OPTIONAL :: STD_iff ! ug RUSTINE POUR LES STD LEVS..... 491 864 492 865 INTEGER :: iff, iff_beg, iff_end 493 866 494 REAL, dimension(klon_mpi) :: buffer_omp495 INTEGER, allocatable, dimension(:) :: index2d867 REAL,DIMENSION(klon_mpi) :: buffer_omp 868 INTEGER, allocatable, DIMENSION(:) :: index2d 496 869 REAL :: Field2d(iim,jj_nb) 497 870 498 871 INTEGER :: ip 499 872 REAL, ALLOCATABLE, DIMENSION(:) :: fieldok 873 874 IF (prt_level >= 9) WRITE(lunout,*)'Begin histrwrite2d ',var%name 500 875 501 876 ! ug RUSTINE POUR LES STD LEVS..... … … 508 883 END IF 509 884 510 IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first dimension not equal to klon',1) 885 ! On regarde si on est dans la phase de définition ou d'écriture: 886 IF(.NOT.vars_defined) THEN 887 !$OMP MASTER 888 !Si phase de définition.... on définit 889 DO iff=iff_beg, iff_end 890 IF (clef_files(iff)) THEN 891 CALL histdef2d(iff, var) 892 ENDIF 893 ENDDO 894 !$OMP END MASTER 895 ELSE 896 897 !Et sinon on.... écrit 898 IF (SIZE(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first DIMENSION not equal to klon',1) 511 899 512 900 CALL Gather_omp(field,buffer_omp) … … 521 909 ALLOCATE(index2d(iim*jj_nb)) 522 910 ALLOCATE(fieldok(iim*jj_nb)) 523 911 #ifndef CPP_NO_IOIPSL 524 912 CALL histwrite(nid_files(iff),var%name,itau_iophy,Field2d,iim*jj_nb,index2d) 913 #endif 525 914 #ifdef CPP_XIOS 526 ! IF (iff .EQ. 1) THEN527 !CALL wxios_write_2D(var%name, Field2d)528 !ENDIF915 IF (iff == iff_beg) THEN 916 CALL wxios_write_2D(var%name, Field2d) 917 ENDIF 529 918 #endif 530 919 ELSE … … 533 922 534 923 IF (is_sequential) THEN 535 ! klon_mpi_begin=1536 ! klon_mpi_end=klon537 924 DO ip=1, npstn 538 925 fieldok(ip)=buffer_omp(nptabij(ip)) … … 540 927 ELSE 541 928 DO ip=1, npstn 542 ! print*,'histwrite2d is_sequential npstn ip name nptabij',npstn,ip,name,nptabij(ip)929 PRINT*,'histwrite2d is_sequential npstn ip namenptabij',npstn,ip,var%name,nptabij(ip) 543 930 IF(nptabij(ip).GE.klon_mpi_begin.AND. & 544 931 nptabij(ip).LE.klon_mpi_end) THEN … … 547 934 ENDDO 548 935 ENDIF 549 936 #ifndef CPP_NO_IOIPSL 550 937 CALL histwrite(nid_files(iff),var%name,itau_iophy,fieldok,npstn,index2d) 938 #endif 551 939 ENDIF 552 940 … … 556 944 ENDDO 557 945 !$OMP END MASTER 558 946 ENDIF ! vars_defined 947 IF (prt_level >= 9) WRITE(lunout,*)'End histrwrite2d ',var%name 559 948 END SUBROUTINE histwrite2d_phy 560 949 561 950 562 951 ! ug NOUVELLE VERSION DES WRITE AVEC LA BOUCLE DO RENTREE 563 SUBROUTINE histwrite3d_phy(var, field )952 SUBROUTINE histwrite3d_phy(var, field, STD_iff) 564 953 USE dimphy 565 954 USE mod_phys_lmdz_para 566 567 use ioipsl 568 !Pour avoir nfiles, nidfiles tout ça tout ça... 569 USE phys_output_var_mod 955 USE ioipsl 570 956 571 957 … … 576 962 577 963 IMPLICIT NONE 578 include 'dimensions.h' 579 580 ! integer,intent(in) :: nid 581 ! logical,intent(in) :: lpoint 582 ! character*(*), intent(IN) :: name 583 ! integer, intent(in) :: itau 584 ! real,dimension(:,:),intent(in) :: field ! --> field(klon,:) 585 586 TYPE(ctrl_out), INTENT(IN) :: var 587 REAL, DIMENSION(:,:), INTENT(IN) :: field ! --> field(klon,:) 588 964 INCLUDE 'dimensions.h' 965 INCLUDE 'iniprint.h' 966 967 TYPE(ctrl_out), INTENT(IN) :: var 968 REAL, DIMENSION(:,:), INTENT(IN) :: field ! --> field(klon,:) 969 INTEGER, INTENT(IN), OPTIONAL :: STD_iff ! ug RUSTINE POUR LES STD LEVS..... 970 971 INTEGER :: iff, iff_beg, iff_end 589 972 590 973 REAL,DIMENSION(klon_mpi,SIZE(field,2)) :: buffer_omp 591 974 REAL :: Field3d(iim,jj_nb,SIZE(field,2)) 592 INTEGER :: ip, n, nlev , iff975 INTEGER :: ip, n, nlev 593 976 INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d 594 977 REAL,ALLOCATABLE, DIMENSION(:,:) :: fieldok 595 978 596 IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first dimension not equal to klon',1) 597 nlev=size(field,2) 598 599 ! print*,'hist3d_phy mpi_rank npstn=',mpi_rank,npstn 600 601 ! DO ip=1, npstn 602 ! print*,'hist3d_phy mpi_rank nptabij',mpi_rank,nptabij(ip) 603 ! ENDDO 979 IF (prt_level >= 9) write(lunout,*)'Begin histrwrite3d ',var%name 980 981 ! ug RUSTINE POUR LES STD LEVS..... 982 IF (PRESENT(STD_iff)) THEN 983 iff_beg = STD_iff 984 iff_end = STD_iff 985 ELSE 986 iff_beg = 1 987 iff_end = nfiles 988 END IF 989 990 ! On regarde si on est dans la phase de définition ou d'écriture: 991 IF(.NOT.vars_defined) THEN 992 !Si phase de définition.... on définit 993 !$OMP MASTER 994 DO iff=iff_beg, iff_end 995 IF (clef_files(iff)) THEN 996 CALL histdef3d(iff, var) 997 ENDIF 998 ENDDO 999 !$OMP END MASTER 1000 ELSE 1001 !Et sinon on.... écrit 1002 IF (SIZE(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1) 1003 nlev=SIZE(field,2) 1004 604 1005 605 1006 CALL Gather_omp(field,buffer_omp) … … 609 1010 610 1011 ! BOUCLE SUR LES FICHIERS 611 DO iff=1, nfiles1012 DO iff=iff_beg, iff_end 612 1013 IF (var%flag(iff) <= lev_files(iff) .AND. clef_files(iff)) THEN 613 1014 IF (.NOT.clef_stations(iff)) THEN 614 1015 ALLOCATE(index3d(iim*jj_nb*nlev)) 615 1016 ALLOCATE(fieldok(iim*jj_nb,nlev)) 1017 1018 #ifndef CPP_NO_IOIPSL 616 1019 CALL histwrite(nid_files(iff),var%name,itau_iophy,Field3d,iim*jj_nb*nlev,index3d) 1020 #endif 1021 617 1022 #ifdef CPP_XIOS 618 ! IF (iff .EQ.1) THEN619 !CALL wxios_write_3D(var%name, Field3d(:,:,1:klev))620 !ENDIF1023 IF (iff == 1) THEN 1024 CALL wxios_write_3D(var%name, Field3d(:,:,1:klev)) 1025 ENDIF 621 1026 #endif 622 1027 … … 627 1032 628 1033 IF (is_sequential) THEN 629 ! klon_mpi_begin=1630 ! klon_mpi_end=klon631 1034 DO n=1, nlev 632 1035 DO ip=1, npstn … … 644 1047 ENDDO 645 1048 ENDIF 1049 #ifndef CPP_NO_IOIPSL 646 1050 CALL histwrite(nid_files(iff),var%name,itau_iophy,fieldok,npstn*nlev,index3d) 1051 #endif 647 1052 ENDIF 648 1053 deallocate(index3d) … … 651 1056 ENDDO 652 1057 !$OMP END MASTER 1058 ENDIF ! vars_defined 1059 IF (prt_level >= 9) write(lunout,*)'End histrwrite3d ',var%name 653 1060 END SUBROUTINE histwrite3d_phy 654 1061 1062 1063 ! VERSION DES HISTWRITE DEDIEES AU TOUT-XIOS-XML DEJA UTILISEE DANS PHYDEV 1064 #ifdef CPP_XIOS 1065 SUBROUTINE histwrite2d_xios(field_name,field) 1066 USE dimphy 1067 USE mod_phys_lmdz_para 1068 USE wxios 1069 1070 1071 IMPLICIT NONE 1072 INCLUDE 'dimensions.h' 1073 INCLUDE 'iniprint.h' 1074 1075 CHARACTER(LEN=*), INTENT(IN) :: field_name 1076 REAL, DIMENSION(:), INTENT(IN) :: field 1077 1078 REAL,DIMENSION(klon_mpi) :: buffer_omp 1079 INTEGER, allocatable, DIMENSION(:) :: index2d 1080 REAL :: Field2d(iim,jj_nb) 1081 1082 INTEGER :: ip 1083 REAL, ALLOCATABLE, DIMENSION(:) :: fieldok 1084 1085 IF (prt_level >= 9) WRITE(lunout,*)'Begin histrwrite2d_xios ',field_name 1086 1087 !Et sinon on.... écrit 1088 IF (SIZE(field)/=klon) CALL abort_gcm('iophy::histwrite2d_xios','Field first DIMENSION not equal to klon',1) 1089 1090 CALL Gather_omp(field,buffer_omp) 1091 !$OMP MASTER 1092 CALL grid1Dto2D_mpi(buffer_omp,Field2d) 1093 1094 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1095 !ATTENTION, STATIONS PAS GEREES ! 1096 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1097 !IF(.NOT.clef_stations(iff)) THEN 1098 IF (.TRUE.) THEN 1099 ALLOCATE(index2d(iim*jj_nb)) 1100 ALLOCATE(fieldok(iim*jj_nb)) 1101 1102 1103 CALL wxios_write_2D(field_name, Field2d) 1104 1105 ELSE 1106 ALLOCATE(fieldok(npstn)) 1107 ALLOCATE(index2d(npstn)) 1108 1109 IF (is_sequential) THEN 1110 DO ip=1, npstn 1111 fieldok(ip)=buffer_omp(nptabij(ip)) 1112 ENDDO 1113 ELSE 1114 DO ip=1, npstn 1115 PRINT*,'histwrite2d_xios is_sequential npstn ip namenptabij',npstn,ip,field_name,nptabij(ip) 1116 IF(nptabij(ip).GE.klon_mpi_begin.AND. & 1117 nptabij(ip).LE.klon_mpi_end) THEN 1118 fieldok(ip)=buffer_omp(nptabij(ip)-klon_mpi_begin+1) 1119 ENDIF 1120 ENDDO 1121 ENDIF 1122 1123 ENDIF 1124 1125 deallocate(index2d) 1126 deallocate(fieldok) 1127 !$OMP END MASTER 1128 1129 IF (prt_level >= 9) WRITE(lunout,*)'End histrwrite2d_xios ',field_name 1130 END SUBROUTINE histwrite2d_xios 1131 1132 1133 ! ug NOUVELLE VERSION DES WRITE AVEC LA BOUCLE DO RENTREE 1134 SUBROUTINE histwrite3d_xios(field_name, field) 1135 USE dimphy 1136 USE mod_phys_lmdz_para 1137 USE wxios 1138 1139 1140 IMPLICIT NONE 1141 INCLUDE 'dimensions.h' 1142 INCLUDE 'iniprint.h' 1143 1144 CHARACTER(LEN=*), INTENT(IN) :: field_name 1145 REAL, DIMENSION(:,:), INTENT(IN) :: field ! --> field(klon,:) 1146 1147 REAL,DIMENSION(klon_mpi,SIZE(field,2)) :: buffer_omp 1148 REAL :: Field3d(iim,jj_nb,SIZE(field,2)) 1149 INTEGER :: ip, n, nlev 1150 INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d 1151 REAL,ALLOCATABLE, DIMENSION(:,:) :: fieldok 1152 1153 IF (prt_level >= 9) write(lunout,*)'Begin histrwrite3d_xios ',field_name 1154 1155 !Et on.... écrit 1156 IF (SIZE(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1) 1157 nlev=SIZE(field,2) 1158 1159 1160 CALL Gather_omp(field,buffer_omp) 1161 !$OMP MASTER 1162 CALL grid1Dto2D_mpi(buffer_omp,field3d) 1163 1164 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1165 !ATTENTION, STATIONS PAS GEREES ! 1166 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1167 !IF (.NOT.clef_stations(iff)) THEN 1168 IF(.TRUE.)THEN 1169 ALLOCATE(index3d(iim*jj_nb*nlev)) 1170 ALLOCATE(fieldok(iim*jj_nb,nlev)) 1171 CALL wxios_write_3D(field_name, Field3d(:,:,1:klev)) 1172 1173 ELSE 1174 nlev=size(field,2) 1175 ALLOCATE(index3d(npstn*nlev)) 1176 ALLOCATE(fieldok(npstn,nlev)) 1177 1178 IF (is_sequential) THEN 1179 DO n=1, nlev 1180 DO ip=1, npstn 1181 fieldok(ip,n)=buffer_omp(nptabij(ip),n) 1182 ENDDO 1183 ENDDO 1184 ELSE 1185 DO n=1, nlev 1186 DO ip=1, npstn 1187 IF(nptabij(ip).GE.klon_mpi_begin.AND. & 1188 nptabij(ip).LE.klon_mpi_end) THEN 1189 fieldok(ip,n)=buffer_omp(nptabij(ip)-klon_mpi_begin+1,n) 1190 ENDIF 1191 ENDDO 1192 ENDDO 1193 ENDIF 1194 ENDIF 1195 deallocate(index3d) 1196 deallocate(fieldok) 1197 !$OMP END MASTER 1198 1199 IF (prt_level >= 9) write(lunout,*)'End histrwrite3d_xios ',field_name 1200 END SUBROUTINE histwrite3d_xios 1201 #endif 655 1202 end module iophy -
LMDZ5/branches/testing/libf/phylmd/mod_phys_lmdz_para.F90
r1664 r1864 32 32 is_master=.FALSE. 33 33 ENDIF 34 CALL Test_transfert34 CALL Test_transfert 35 35 !$OMP END PARALLEL 36 36 IF (is_using_mpi .OR. is_using_omp) THEN -
LMDZ5/branches/testing/libf/phylmd/pbl_surface_mod.F90
r1795 r1864 174 174 t, q, u, v, & 175 175 pplay, paprs, pctsrf, & 176 ts, alb1, alb2,ustar, u10m, v10m,&176 ts, alb1, alb2,ustar, u10m, v10m,wstar, & 177 177 lwdown_m, cdragh, cdragm, zu1, zv1, & 178 178 alb1_m, alb2_m, zxsens, zxevap, & … … 294 294 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: alb2 ! albedo in near infra-red SW interval 295 295 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: ustar ! u* (m/s) 296 REAL, DIMENSION(klon, nbsrf+1), INTENT(INOUT) :: wstar ! w* (m/s) 296 297 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: u10m ! u speed at 10m 297 298 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: v10m ! v speed at 10m … … 406 407 REAL, DIMENSION(klon) :: yt2m, yq2m, yu10m 407 408 REAL, DIMENSION(klon) :: yustar 409 REAL, DIMENSION(klon) :: ywstar 408 410 REAL, DIMENSION(klon) :: ywindsp 409 411 REAL, DIMENSION(klon) :: yt10m, yq10m … … 1065 1067 q2m(:,nsrf) = 0. 1066 1068 ustar(:,nsrf) = 0. 1069 wstar(:,nsrf) = 0. 1067 1070 u10m(:,nsrf) = 0. 1068 1071 v10m(:,nsrf) = 0. … … 1145 1148 1146 1149 ! print*,'OK pbl 5' 1147 CALL HBTM(knon, ypaprs, ypplay, &1148 yt2m,yt10m,yq2m,yq10m,yustar, &1150 CALL hbtm(knon, ypaprs, ypplay, & 1151 yt2m,yt10m,yq2m,yq10m,yustar,ywstar, & 1149 1152 y_flux_t,y_flux_q,yu,yv,yt,yq, & 1150 1153 ypblh,ycapCL,yoliqCL,ycteiCL,ypblT, & … … 1154 1157 i = ni(j) 1155 1158 pblh(i,nsrf) = ypblh(j) 1159 wstar(i,nsrf) = ywstar(j) 1156 1160 plcl(i,nsrf) = ylcl(j) 1157 1161 capCL(i,nsrf) = ycapCL(j) … … 1215 1219 s_therm(:) = 0.0 ; s_trmb1(:) = 0.0 1216 1220 s_trmb2(:) = 0.0 ; s_trmb3(:) = 0.0 1221 wstar(:,is_ave)=0. 1217 1222 1218 1223 ! print*,'OK pbl 9' … … 1233 1238 zq2m(i) = zq2m(i) + q2m(i,nsrf) * pctsrf(i,nsrf) 1234 1239 zustar(i) = zustar(i) + ustar(i,nsrf) * pctsrf(i,nsrf) 1240 wstar(i,is_ave)=wstar(i,is_ave)+wstar(i,nsrf)*pctsrf(i,nsrf) 1235 1241 zu10m(i) = zu10m(i) + u10m(i,nsrf) * pctsrf(i,nsrf) 1236 1242 zv10m(i) = zv10m(i) + v10m(i,nsrf) * pctsrf(i,nsrf) -
LMDZ5/branches/testing/libf/phylmd/phys_local_var_mod.F90
r1795 r1864 3 3 ! 4 4 MODULE phys_local_var_mod 5 6 5 ! Variables locales pour effectuer les appels en serie 7 6 !====================================================================== … … 187 186 !$OMP THREADPRIVATE(topswcf_aerop, solswcf_aerop) 188 187 188 189 !Ajout de celles nécessaires au phys_output_write_mod 190 REAL, SAVE, ALLOCATABLE :: slp(:) 191 !$OMP THREADPRIVATE(slp) 192 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: sens, flwp, fiwp 193 !$OMP THREADPRIVATE(sens, flwp, fiwp) 194 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_wake, alp_wake, bils 195 !$OMP THREADPRIVATE(ale_wake, alp_wake, bils) 196 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragm, cdragh 197 !$OMP THREADPRIVATE(cdragm, cdragh) 198 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cldh, cldl, cldm, cldq, cldt, qsat2m, qsol 199 !$OMP THREADPRIVATE(cldh, cldl, cldm, cldq, cldt, qsat2m, qsol) 200 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, fder, plcl, plfc, prw 201 !$OMP THREADPRIVATE(dthmin, evap, fder, plcl, plfc, prw) 202 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zustar, zu10m, zv10m, rh2m 203 !$OMP THREADPRIVATE(zustar, zu10m, zv10m, rh2m) 204 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: s_lcl, s_pblh, s_pblt, s_therm 205 !$OMP THREADPRIVATE(s_lcl, s_pblh, s_pblt, s_therm) 206 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: slab_wfbils 207 !$OMP THREADPRIVATE(slab_wfbils) 208 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: tpot, tpote, ue, uq, ve, vq, zxffonte 209 !$OMP THREADPRIVATE(tpot, tpote, ue, uq, ve, vq, zxffonte) 210 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfqcalving 211 !$OMP THREADPRIVATE(zxfqcalving) 212 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte 213 !$OMP THREADPRIVATE(zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte) 214 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxqsurf, rain_lsc 215 !$OMP THREADPRIVATE(zxqsurf, rain_lsc) 216 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wake_h, wbeff, zmax_th, zq2m, zt2m 217 !$OMP THREADPRIVATE(wake_h, wbeff, zmax_th, zq2m, zt2m) 218 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: weak_inversion 219 !$OMP THREADPRIVATE(weak_inversion) 220 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_bl_stat,alp_bl_conv,alp_bl_det 221 !$OMP THREADPRIVATE(ale_bl_stat,alp_bl_conv,alp_bl_det) 222 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_fluct_m,alp_bl_fluct_tke 223 !$OMP THREADPRIVATE(alp_bl_fluct_m,alp_bl_fluct_tke) 224 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_stat, n2, s2 225 !$OMP THREADPRIVATE(alp_bl_stat, n2, s2) 226 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: proba_notrig, random_notrig 227 !$OMP THREADPRIVATE(proba_notrig, random_notrig) 228 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: fsolsw, wfbils, wfbilo 229 !$OMP THREADPRIVATE(fsolsw, wfbils, wfbilo) 230 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: t2m, fevap, fluxlat, fsollw,evap_pot 231 !$OMP THREADPRIVATE(t2m, fevap, fluxlat, fsollw,evap_pot) 232 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dnwd, dnwd0, upwd, omega 233 !$OMP THREADPRIVATE(dnwd, dnwd0, upwd, omega) 234 ! REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: coefh, coefm, lambda_th 235 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: lambda_th 236 !$OMP THREADPRIVATE(lambda_th) 237 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: cldemi, cldfra, cldtau, fiwc, fl, re, flwc 238 !$OMP THREADPRIVATE(cldemi, cldfra, cldtau, fiwc, fl, re, flwc) 239 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq, ref_ice, theta, zphi 240 !$OMP THREADPRIVATE(ref_liq, ref_ice, theta, zphi) 241 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wake_omg, zx_rh 242 !$OMP THREADPRIVATE(wake_omg, zx_rh) 243 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: frugs, agesno 244 !$OMP THREADPRIVATE(frugs, agesno) 245 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmflxr, pmflxs, prfl, psfl, fraca 246 !$OMP THREADPRIVATE(pmflxr, pmflxs, prfl, psfl, fraca) 247 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: Vprecip, zw2 248 !$OMP THREADPRIVATE(Vprecip, zw2) 249 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmfd, pmfu 250 !$OMP THREADPRIVATE(pmfd, pmfu) 251 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: fluxt, fluxu, fluxv 252 !$OMP THREADPRIVATE(fluxt, fluxu, fluxv) 253 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: uwriteSTD, vwriteSTD, wwriteSTD 254 !$OMP THREADPRIVATE(uwriteSTD, vwriteSTD, wwriteSTD) 255 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD 256 !$OMP THREADPRIVATE(phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD) 257 258 ! ug et d'autres encore: 259 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wdtrainA, wdtrainM 260 !$OMP THREADPRIVATE(wdtrainA, wdtrainM) 261 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: beta_prec 262 !$OMP THREADPRIVATE(beta_prec) 263 REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rneb 264 !$OMP THREADPRIVATE(rneb) 265 189 266 CONTAINS 190 267 … … 195 272 USE aero_mod 196 273 USE indice_sol_mod 274 USE phys_output_var_mod 275 USE phys_state_var_mod 197 276 198 277 IMPLICIT NONE … … 279 358 ALLOCATE(topswcf_aerop(klon,naero_grp), solswcf_aerop(klon,naero_grp)) 280 359 360 ! FH Ajout de celles nécessaires au phys_output_write_mod 361 362 ALLOCATE(slp(klon)) 363 ALLOCATE(ale_wake(klon), alp_wake(klon), bils(klon)) 364 ALLOCATE(cdragm(klon), cdragh(klon), cldh(klon), cldl(klon)) 365 ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon), qsol(klon)) 366 ALLOCATE(dthmin(klon), evap(klon), fder(klon), plcl(klon), plfc(klon)) 367 ALLOCATE(prw(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon)) 368 ALLOCATE(s_lcl(klon)) 369 ALLOCATE(s_pblh(klon), s_pblt(klon), s_therm(klon)) 370 ALLOCATE(slab_wfbils(klon), tpot(klon), tpote(klon), ue(klon)) 371 ALLOCATE(uq(klon), ve(klon), vq(klon), zxffonte(klon)) 372 ALLOCATE(zxfqcalving(klon), zxfluxlat(klon), zxrugs(klon)) 373 ALLOCATE(zxtsol(klon), snow_lsc(klon), zxfqfonte(klon), zxqsurf(klon)) 374 ALLOCATE(rain_lsc(klon), wake_h(klon), wbeff(klon), zmax_th(klon)) 375 ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon)) 376 ALLOCATE(sens(klon), flwp(klon), fiwp(klon)) 377 ALLOCATE(ale_bl_stat(klon), alp_bl_conv(klon), alp_bl_det(klon)) 378 ALLOCATE(alp_bl_fluct_m(klon), alp_bl_fluct_tke(klon)) 379 ALLOCATE(alp_bl_stat(klon), n2(klon), s2(klon)) 380 ALLOCATE(proba_notrig(klon), random_notrig(klon)) 381 382 ALLOCATE(dnwd(klon, klev), dnwd0(klon, klev)) 383 ! ALLOCATE(upwd(klon, klev), omega(klon, klev), coefh(klon, klev)) 384 ALLOCATE(upwd(klon, klev), omega(klon, klev)) 385 ! ALLOCATE(coefm(klon, klev), lambda_th(klon, klev), cldemi(klon, klev)) 386 ALLOCATE(lambda_th(klon, klev), cldemi(klon, klev)) 387 ALLOCATE(cldfra(klon, klev), cldtau(klon, klev), fiwc(klon, klev)) 388 ALLOCATE(fl(klon, klev), re(klon, klev), flwc(klon, klev)) 389 ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev)) 390 ALLOCATE(zphi(klon, klev), wake_omg(klon, klev), zx_rh(klon, klev)) 391 ALLOCATE(pmfd(klon, klev), pmfu(klon, klev)) 392 393 ALLOCATE(t2m(klon, nbsrf), fevap(klon, nbsrf), fluxlat(klon, nbsrf)) 394 ALLOCATE(frugs(klon, nbsrf), agesno(klon, nbsrf), fsollw(klon, nbsrf)) 395 ALLOCATE(fsolsw(klon, nbsrf), wfbils(klon, nbsrf), wfbilo(klon, nbsrf)) 396 ALLOCATE(evap_pot(klon, nbsrf)) 397 398 ALLOCATE(pmflxr(klon, klev+1), pmflxs(klon, klev+1), prfl(klon, klev+1)) 399 ALLOCATE(psfl(klon, klev+1), fraca(klon, klev+1), Vprecip(klon, klev+1)) 400 ALLOCATE(zw2(klon, klev+1)) 401 402 ALLOCATE(fluxu(klon, klev, nbsrf), fluxv(klon, klev, nbsrf)) 403 ALLOCATE(fluxt(klon, klev, nbsrf)) 404 405 ALLOCATE(uwriteSTD(klon,nlevSTD,nfiles), vwriteSTD(klon,nlevSTD,nfiles)) 406 ALLOCATE(wwriteSTD(klon,nlevSTD,nfiles), phiwriteSTD(klon,nlevSTD,nfiles)) 407 ALLOCATE(qwriteSTD(klon,nlevSTD,nfiles), twriteSTD(klon,nlevSTD,nfiles)) 408 ALLOCATE(rhwriteSTD(klon,nlevSTD,nfiles)) 409 410 ! ug et d'autres encore: 411 ALLOCATE(wdtrainA(klon,klev),wdtrainM(klon,klev)) 412 ALLOCATE(beta_prec(klon,klev)) 413 ALLOCATE(rneb(klon,klev)) 414 415 281 416 END SUBROUTINE phys_local_var_init 282 417 … … 368 503 deallocate(topswcf_aerop, solswcf_aerop) 369 504 505 506 ! FH Ajout de celles nécessaires au phys_output_write_mod 507 DEALLOCATE(slp) 508 DEALLOCATE(ale_wake, alp_wake, bils) 509 DEALLOCATE(cdragm, cdragh, cldh, cldl) 510 DEALLOCATE(cldm, cldq, cldt, qsat2m, qsol) 511 DEALLOCATE(dthmin, evap, fder, plcl, plfc) 512 DEALLOCATE(prw, zustar, zu10m, zv10m, rh2m, s_lcl) 513 DEALLOCATE(s_pblh, s_pblt, s_therm) 514 DEALLOCATE(slab_wfbils, tpot, tpote, ue) 515 DEALLOCATE(uq, ve, vq, zxffonte) 516 DEALLOCATE(zxfqcalving, zxfluxlat, zxrugs) 517 DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf) 518 DEALLOCATE(rain_lsc, wake_h, wbeff, zmax_th) 519 DEALLOCATE(zq2m, zt2m, weak_inversion) 520 DEALLOCATE(sens, flwp, fiwp) 521 DEALLOCATE(ale_bl_stat,alp_bl_conv,alp_bl_det) 522 DEALLOCATE(alp_bl_fluct_m,alp_bl_fluct_tke) 523 DEALLOCATE(alp_bl_stat, n2, s2) 524 DEALLOCATE(proba_notrig, random_notrig) 525 526 DEALLOCATE(dnwd, dnwd0) 527 ! DEALLOCATE(upwd, omega, coefh) 528 DEALLOCATE(upwd, omega) 529 ! DEALLOCATE(coefm, lambda_th, cldemi) 530 DEALLOCATE(lambda_th, cldemi) 531 DEALLOCATE(cldfra, cldtau, fiwc) 532 DEALLOCATE(fl, re, flwc) 533 DEALLOCATE(ref_liq, ref_ice, theta) 534 DEALLOCATE(zphi, wake_omg, zx_rh) 535 DEALLOCATE(pmfd, pmfu) 536 537 DEALLOCATE(t2m, fevap, fluxlat) 538 DEALLOCATE(frugs, agesno, fsollw, evap_pot) 539 DEALLOCATE(fsolsw, wfbils, wfbilo) 540 541 DEALLOCATE(pmflxr, pmflxs, prfl) 542 DEALLOCATE(psfl, fraca, Vprecip) 543 DEALLOCATE(zw2) 544 545 DEALLOCATE(fluxu, fluxv) 546 DEALLOCATE(fluxt) 547 548 DEALLOCATE(uwriteSTD, vwriteSTD) 549 DEALLOCATE(wwriteSTD, phiwriteSTD) 550 DEALLOCATE(qwriteSTD, twriteSTD, rhwriteSTD) 551 552 ! ug et d'autres encore: 553 DEALLOCATE(wdtrainA, wdtrainM) 554 DEALLOCATE(beta_prec) 555 DEALLOCATE(rneb) 556 370 557 END SUBROUTINE phys_local_var_end 371 558 -
LMDZ5/branches/testing/libf/phylmd/phys_output_ctrlout_mod.F90
r1795 r1864 19 19 !!! Comosantes de la coordonnee sigma-hybride 20 20 !!! Ap et Bp 21 TYPE(ctrl_out), SAVE :: o_Ahyb = ctrl_out((/ 1, 1, 1, 1, 1, 1 /), &22 'Ap', '', '', (/ ('', i=1, 6) /))23 TYPE(ctrl_out), SAVE :: o_Bhyb = ctrl_out((/ 1, 1, 1, 1, 1, 1 /), &24 'Bp', '', '', (/ ('', i=1, 6) /))25 TYPE(ctrl_out), SAVE :: o_Alt = ctrl_out((/ 1, 1, 1, 1, 1, 1 /), &26 'Alt', '', '', (/ ('', i=1, 6) /))21 TYPE(ctrl_out), SAVE :: o_Ahyb = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11 /), & 22 'Ap', '', '', (/ ('', i=1, 9) /)) 23 TYPE(ctrl_out), SAVE :: o_Bhyb = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11 /), & 24 'Bp', '', '', (/ ('', i=1, 9) /)) 25 TYPE(ctrl_out), SAVE :: o_Alt = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11 /), & 26 'Alt', '', '', (/ ('', i=1, 9) /)) 27 27 28 28 !!! 1D 29 TYPE(ctrl_out), SAVE :: o_phis = ctrl_out((/ 1, 1, 10, 5, 1, 1 /), & 30 'phis', 'Surface geop.height', 'm2/s2', (/ ('', i=1, 6) /)) 31 TYPE(ctrl_out), SAVE :: o_aire = ctrl_out((/ 1, 1, 10, 10, 1, 1 /), & 32 'aire', 'Grid area', '-', (/ 'once', 'once', 'once', 'once', 'once', 'once' /)) 33 TYPE(ctrl_out), SAVE :: o_contfracATM = ctrl_out((/ 10, 1, 1, 10, 10, 10 /), & 34 'contfracATM', '% sfce ter+lic', '-', & 35 (/ "once", "once", "once", "once", "once", "once" /)) 36 TYPE(ctrl_out), SAVE :: o_contfracOR = ctrl_out((/ 10, 1, 1, 10, 10, 10 /), & 37 'contfracOR', '% sfce terre OR', '-', (/ ('', i=1, 6) /)) 38 TYPE(ctrl_out), SAVE :: o_aireTER = ctrl_out((/ 10, 10, 1, 10, 10, 10 /), & 39 'aireTER', 'Grid area CONT', '-', (/ ('', i=1, 6) /)) 29 TYPE(ctrl_out), SAVE :: o_phis = ctrl_out((/ 1, 1, 10, 5, 1, 1, 11, 11, 11 /), & 30 'phis', 'Surface geop.height', 'm2/s2', (/ ('', i=1, 9) /)) 31 TYPE(ctrl_out), SAVE :: o_aire = ctrl_out((/ 1, 1, 10, 10, 1, 1, 11, 11, 11 /), & 32 'aire', 'Grid area', '-', (/ 'once', 'once', 'once', 'once', 'once', 'once', & 33 'once', 'once', 'once' /)) 34 TYPE(ctrl_out), SAVE :: o_contfracATM = ctrl_out((/ 10, 1, 1, 10, 10, 10, 11, 11, 11 /), & 35 'contfracATM', '% sfce ter+lic', '-', & 36 (/ 'once', 'once', 'once', 'once', 'once', 'once', 'once', 'once', 'once' /)) 37 TYPE(ctrl_out), SAVE :: o_contfracOR = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 38 'contfracOR', '% sfce terre OR', '-', (/ ('', i=1, 9) /)) 39 TYPE(ctrl_out), SAVE :: o_aireTER = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 40 'aireTER', 'Grid area CONT', '-', (/ ('', i=1, 9) /)) 40 41 41 42 !!! 2D 42 TYPE(ctrl_out), SAVE :: o_flat = ctrl_out((/ 5, 1, 10, 10, 5, 10 /), & 43 'flat', 'Latent heat flux', 'W/m2', (/ ('', i=1, 6) /)) 44 TYPE(ctrl_out), SAVE :: o_slp = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), & 45 'slp', 'Sea Level Pressure', 'Pa', (/ ('', i=1, 6) /)) 46 TYPE(ctrl_out), SAVE :: o_tsol = ctrl_out((/ 1, 1, 1, 5, 10, 10 /), & 47 'tsol', 'Surface Temperature', 'K', (/ ('', i=1, 6) /)) 48 TYPE(ctrl_out), SAVE :: o_t2m = ctrl_out((/ 1, 1, 1, 5, 10, 10 /), & 49 't2m', 'Temperature 2m', 'K', (/ ('', i=1, 6) /)) 50 TYPE(ctrl_out), SAVE :: o_t2m_min = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), & 51 't2m_min', 'Temp 2m min', 'K', & 52 (/ "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)" /)) 53 TYPE(ctrl_out), SAVE :: o_t2m_max = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), & 54 't2m_max', 'Temp 2m max', 'K', & 55 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) 43 TYPE(ctrl_out), SAVE :: o_flat = ctrl_out((/ 5, 1, 10, 10, 5, 10, 11, 11, 11 /), & 44 'flat', 'Latent heat flux', 'W/m2', (/ ('', i=1, 9) /)) 45 TYPE(ctrl_out), SAVE :: o_slp = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 46 'slp', 'Sea Level Pressure', 'Pa', (/ ('', i=1, 9) /)) 47 TYPE(ctrl_out), SAVE :: o_tsol = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 48 'tsol', 'Surface Temperature', 'K', (/ ('', i=1, 9) /)) 49 TYPE(ctrl_out), SAVE :: o_t2m = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 50 't2m', 'Temperature 2m', 'K', (/ ('', i=1, 9) /)) 51 TYPE(ctrl_out), SAVE :: o_t2m_min = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 52 't2m_min', 'Temp 2m min', 'K', & 53 (/ "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)" /)) 54 TYPE(ctrl_out), SAVE :: o_t2m_max = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 55 't2m_max', 'Temp 2m max', 'K', & 56 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 57 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) 56 58 57 59 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_t2m_srf = (/ & 58 ctrl_out((/ 10, 6, 10, 10, 10, 10 /), &59 't2m_ter', "Temp 2m "//clnsurf(1), "K", (/ ('', i=1, 6) /)), &60 ctrl_out((/ 10, 6, 10, 10, 10, 10 /), &61 't2m_lic', "Temp 2m "//clnsurf(2), "K", (/ ('', i=1, 6) /)), &62 ctrl_out((/ 10, 6, 10, 10, 10, 10 /), &63 't2m_oce', "Temp 2m "//clnsurf(3), "K", (/ ('', i=1, 6) /)), &64 ctrl_out((/ 10, 6, 10, 10, 10, 10 /), &65 't2m_sic', "Temp 2m "//clnsurf(4), "K", (/ ('', i=1, 6) /)) /)66 67 TYPE(ctrl_out), SAVE :: o_wind10m = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &68 'wind10m', '10-m wind speed', 'm/s', (/ ('', i=1, 6) /))69 TYPE(ctrl_out), SAVE :: o_wind10max = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), &70 'wind10max', '10m wind speed max', 'm/s', (/ ('', i=1, 6) /))71 TYPE(ctrl_out), SAVE :: o_sicf = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &72 'sicf', 'Sea-ice fraction', '-', (/ ('', i=1, 6) /))73 TYPE(ctrl_out), SAVE :: o_q2m = ctrl_out((/ 1, 1, 1, 5, 10, 10 /), &74 'q2m', 'Specific humidity 2m', 'kg/kg', (/ ('', i=1, 6) /))75 TYPE(ctrl_out), SAVE :: o_ustar = ctrl_out((/ 1, 1, 1 , 5, 10, 10/), &76 'ustar', 'Friction velocity', 'm/s', (/ ('', i=1, 6) /))77 TYPE(ctrl_out), SAVE :: o_u10m = ctrl_out((/ 1, 1, 1, 5, 10, 10 /), &78 'u10m', 'Vent zonal 10m', 'm/s', (/ ('', i=1, 6) /))79 TYPE(ctrl_out), SAVE :: o_v10m = ctrl_out((/ 1, 1, 1, 5, 10, 10 /), &80 'v10m', 'Vent meridien 10m', 'm/s', (/ ('', i=1, 6) /))81 TYPE(ctrl_out), SAVE :: o_psol = ctrl_out((/ 1, 1, 1, 5, 10, 10 /), &82 'psol', 'Surface Pressure', 'Pa', (/ ('', i=1, 6) /))83 TYPE(ctrl_out), SAVE :: o_qsurf = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &84 'qsurf', 'Surface Air humidity', 'kg/kg', (/ ('', i=1, 6) /))60 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /), & 61 't2m_ter', "Temp 2m "//clnsurf(1), "K", (/ ('', i=1, 9) /)), & 62 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /), & 63 't2m_lic', "Temp 2m "//clnsurf(2), "K", (/ ('', i=1, 9) /)), & 64 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /), & 65 't2m_oce', "Temp 2m "//clnsurf(3), "K", (/ ('', i=1, 9) /)), & 66 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /), & 67 't2m_sic', "Temp 2m "//clnsurf(4), "K", (/ ('', i=1, 9) /)) /) 68 69 TYPE(ctrl_out), SAVE :: o_wind10m = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 70 'wind10m', '10-m wind speed', 'm/s', (/ ('', i=1, 9) /)) 71 TYPE(ctrl_out), SAVE :: o_wind10max = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 72 'wind10max', '10m wind speed max', 'm/s', (/ ('', i=1, 9) /)) 73 TYPE(ctrl_out), SAVE :: o_sicf = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 74 'sicf', 'Sea-ice fraction', '-', (/ ('', i=1, 9) /)) 75 TYPE(ctrl_out), SAVE :: o_q2m = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 76 'q2m', 'Specific humidity 2m', 'kg/kg', (/ ('', i=1, 9) /)) 77 TYPE(ctrl_out), SAVE :: o_ustar = ctrl_out((/ 1, 1, 10, 5, 10, 10, 11, 11, 11 /), & 78 'ustar', 'Friction velocity', 'm/s', (/ ('', i=1, 9) /)) 79 TYPE(ctrl_out), SAVE :: o_u10m = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 80 'u10m', 'Vent zonal 10m', 'm/s', (/ ('', i=1, 9) /)) 81 TYPE(ctrl_out), SAVE :: o_v10m = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 82 'v10m', 'Vent meridien 10m', 'm/s', (/ ('', i=1, 9) /)) 83 TYPE(ctrl_out), SAVE :: o_psol = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 84 'psol', 'Surface Pressure', 'Pa', (/ ('', i=1, 9) /)) 85 TYPE(ctrl_out), SAVE :: o_qsurf = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 86 'qsurf', 'Surface Air humidity', 'kg/kg', (/ ('', i=1, 9) /)) 85 87 86 88 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_ustar_srf = (/ & 87 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_ter', & 88 "Friction velocity "//clnsurf(1),"m/s", (/ ('', i=1, 6) /)), & 89 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_lic', & 90 "Friction velocity "//clnsurf(2),"m/s", (/ ('', i=1, 6) /)), & 91 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_oce', & 92 "Friction velocity "//clnsurf(3),"m/s", (/ ('', i=1, 6) /)), & 93 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_sic', & 94 "Friction velocity "//clnsurf(4),"m/s", (/ ('', i=1, 6) /)) /) 89 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'ustar_ter', & 90 "Friction velocity "//clnsurf(1),"m/s", (/ ('', i=1, 9) /)), & 91 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'ustar_lic', & 92 "Friction velocity "//clnsurf(2),"m/s", (/ ('', i=1, 9) /)), & 93 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'ustar_oce', & 94 "Friction velocity "//clnsurf(3),"m/s", (/ ('', i=1, 9) /)), & 95 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'ustar_sic', & 96 "Friction velocity "//clnsurf(4),"m/s", (/ ('', i=1, 9) /)) /) 97 98 TYPE(ctrl_out), SAVE, DIMENSION(5) :: o_wstar = (/ & 99 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'wstar_ter', & 100 "Friction velocity "//clnsurf(1),"m/s", (/ ('', i=1, 9) /)), & 101 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'wstar_lic', & 102 "Friction velocity "//clnsurf(2),"m/s", (/ ('', i=1, 9) /)), & 103 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'wstar_oce', & 104 "Friction velocity "//clnsurf(3),"m/s", (/ ('', i=1, 9) /)), & 105 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'wstar_sic', & 106 "Friction velocity "//clnsurf(4),"m/s", (/ ('', i=1, 9) /)), & 107 ctrl_out((/ 5, 5, 10, 10, 10, 10, 11, 11, 11 /),'wstar', & 108 "w* convective velocity "//clnsurf(4),"m/s", (/ ('', i=1, 9) /)) /) 95 109 96 110 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_u10m_srf = (/ & 97 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_ter', &98 "Vent Zonal 10m "//clnsurf(1),"m/s", (/ ('', i=1, 6) /)), &99 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_lic', &100 "Vent Zonal 10m "//clnsurf(2),"m/s", (/ ('', i=1, 6) /)), &101 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_oce', &102 "Vent Zonal 10m "//clnsurf(3),"m/s", (/ ('', i=1, 6) /)), &103 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_sic', &104 "Vent Zonal 10m "//clnsurf(4),"m/s", (/ ('', i=1, 6) /)) /)111 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'u10m_ter', & 112 "Vent Zonal 10m "//clnsurf(1),"m/s", (/ ('', i=1, 9) /)), & 113 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'u10m_lic', & 114 "Vent Zonal 10m "//clnsurf(2),"m/s", (/ ('', i=1, 9) /)), & 115 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'u10m_oce', & 116 "Vent Zonal 10m "//clnsurf(3),"m/s", (/ ('', i=1, 9) /)), & 117 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'u10m_sic', & 118 "Vent Zonal 10m "//clnsurf(4),"m/s", (/ ('', i=1, 9) /)) /) 105 119 106 120 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_v10m_srf = (/ & 107 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'v10m_ter', &108 "Vent meredien 10m "//clnsurf(1),"m/s", (/ ('', i=1, 6) /)), &109 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'v10m_lic', &110 "Vent meredien 10m "//clnsurf(2),"m/s", (/ ('', i=1, 6) /)), &111 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'v10m_oce', &112 "Vent meredien 10m "//clnsurf(3),"m/s", (/ ('', i=1, 6) /)), &113 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'v10m_sic', &114 "Vent meredien 10m "//clnsurf(4),"m/s", (/ ('', i=1, 6) /)) /)115 116 TYPE(ctrl_out), SAVE :: o_qsol = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &117 'qsol', 'Soil watter content', 'mm', (/ ('', i=1, 6) /))118 TYPE(ctrl_out), SAVE :: o_ndayrain = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &119 120 (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /))121 TYPE(ctrl_out), SAVE :: o_precip = ctrl_out((/ 1, 1, 1, 10, 5, 10 /), &122 'precip', 'Precip Totale liq+sol', 'kg/(s*m2)', (/ ('', i=1, 6) /))123 TYPE(ctrl_out), SAVE :: o_plul = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &124 'plul', 'Large-scale Precip.', 'kg/(s*m2)', (/ ('', i=1, 6) /))125 TYPE(ctrl_out), SAVE :: o_pluc = ctrl_out((/ 1, 1, 1, 10, 5, 10 /), &126 'pluc', 'Convective Precip.', 'kg/(s*m2)', (/ ('', i=1, 6) /))127 TYPE(ctrl_out), SAVE :: o_snow = ctrl_out((/ 1, 1, 10, 10, 5, 10 /), &128 'snow', 'Snow fall', 'kg/(s*m2)', (/ ('', i=1, 6) /))129 TYPE(ctrl_out), SAVE :: o_evap = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &130 'evap', 'Evaporat', 'kg/(s*m2)', (/ ('', i=1, 6) /))121 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'v10m_ter', & 122 "Vent meredien 10m "//clnsurf(1),"m/s", (/ ('', i=1, 9) /)), & 123 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'v10m_lic', & 124 "Vent meredien 10m "//clnsurf(2),"m/s", (/ ('', i=1, 9) /)), & 125 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'v10m_oce', & 126 "Vent meredien 10m "//clnsurf(3),"m/s", (/ ('', i=1, 9) /)), & 127 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'v10m_sic', & 128 "Vent meredien 10m "//clnsurf(4),"m/s", (/ ('', i=1, 9) /)) /) 129 130 TYPE(ctrl_out), SAVE :: o_qsol = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 131 'qsol', 'Soil watter content', 'mm', (/ ('', i=1, 9) /)) 132 TYPE(ctrl_out), SAVE :: o_ndayrain = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 133 'ndayrain', 'Number of dayrain(liq+sol)', '-', & 134 (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 135 TYPE(ctrl_out), SAVE :: o_precip = ctrl_out((/ 1, 1, 1, 10, 5, 10, 11, 11, 11 /), & 136 'precip', 'Precip Totale liq+sol', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 137 TYPE(ctrl_out), SAVE :: o_plul = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 138 'plul', 'Large-scale Precip.', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 139 TYPE(ctrl_out), SAVE :: o_pluc = ctrl_out((/ 1, 1, 1, 10, 5, 10, 11, 11, 11 /), & 140 'pluc', 'Convective Precip.', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 141 TYPE(ctrl_out), SAVE :: o_snow = ctrl_out((/ 1, 1, 10, 10, 5, 10, 11, 11, 11 /), & 142 'snow', 'Snow fall', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 143 TYPE(ctrl_out), SAVE :: o_evap = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 144 'evap', 'Evaporat', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 131 145 132 146 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_evap_srf = (/ & 133 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evap_ter', &134 "evaporation at surface "//clnsurf(1),"kg/(s*m2)", (/ ('', i=1, 6) /)), &135 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evap_lic', &136 "evaporation at surface "//clnsurf(2),"kg/(s*m2)", (/ ('', i=1, 6) /)), &137 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evap_oce', &138 "evaporation at surface "//clnsurf(3),"kg/(s*m2)", (/ ('', i=1, 6) /)), &139 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evap_sic', &140 "evaporation at surface "//clnsurf(4),"kg/(s*m2)", (/ ('', i=1, 6) /)) /)141 142 TYPE(ctrl_out), SAVE :: o_msnow = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &143 'msnow', 'Surface snow amount', 'kg/m2', (/ ('', i=1, 6) /))144 TYPE(ctrl_out), SAVE :: o_fsnow = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &145 'fsnow', 'Surface snow area fraction', '-', (/ ('', i=1, 6) /))146 TYPE(ctrl_out), SAVE :: o_tops = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &147 'tops', 'Solar rad. at TOA', 'W/m2', (/ ('', i=1, 6) /))148 TYPE(ctrl_out), SAVE :: o_tops0 = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &149 'tops0', 'CS Solar rad. at TOA', 'W/m2', (/ ('', i=1, 6) /))150 TYPE(ctrl_out), SAVE :: o_topl = ctrl_out((/ 1, 1, 10, 5, 10, 10 /), &151 'topl', 'IR rad. at TOA', 'W/m2', (/ ('', i=1, 6) /))152 TYPE(ctrl_out), SAVE :: o_topl0 = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &153 'topl0', 'IR rad. at TOA', 'W/m2', (/ ('', i=1, 6) /))154 TYPE(ctrl_out), SAVE :: o_SWupTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10 /), &155 'SWupTOA', 'SWup at TOA', 'W/m2', (/ ('', i=1, 6) /))156 TYPE(ctrl_out), SAVE :: o_SWupTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10 /), &157 'SWupTOAclr', 'SWup clear sky at TOA', 'W/m2', (/ ('', i=1, 6) /))158 TYPE(ctrl_out), SAVE :: o_SWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10 /), &159 'SWdnTOA', 'SWdn at TOA', 'W/m2', (/ ('', i=1, 6) /))160 TYPE(ctrl_out), SAVE :: o_SWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10 /), &161 'SWdnTOAclr', 'SWdn clear sky at TOA', 'W/m2', (/ ('', i=1, 6) /))162 TYPE(ctrl_out), SAVE :: o_nettop = ctrl_out((/ 1, 4, 10, 10, 10, 10 /), &163 'nettop', 'Net dn radiatif flux at TOA', 'W/m2', (/ ('', i=1, 6) /))164 TYPE(ctrl_out), SAVE :: o_SWup200 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &165 'SWup200', 'SWup at 200mb', 'W/m2', (/ ('', i=1, 6) /))166 TYPE(ctrl_out), SAVE :: o_SWup200clr = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), &167 'SWup200clr', 'SWup clear sky at 200mb', 'W/m2', (/ ('', i=1, 6) /))168 TYPE(ctrl_out), SAVE :: o_SWdn200 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &169 'SWdn200', 'SWdn at 200mb', 'W/m2', (/ ('', i=1, 6) /))170 TYPE(ctrl_out), SAVE :: o_SWdn200clr = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), &171 'SWdn200clr', 'SWdn clear sky at 200mb', 'W/m2', (/ ('', i=1, 6) /))147 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'evap_ter', & 148 "evaporation at surface "//clnsurf(1),"kg/(s*m2)", (/ ('', i=1, 9) /)), & 149 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'evap_lic', & 150 "evaporation at surface "//clnsurf(2),"kg/(s*m2)", (/ ('', i=1, 9) /)), & 151 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'evap_oce', & 152 "evaporation at surface "//clnsurf(3),"kg/(s*m2)", (/ ('', i=1, 9) /)), & 153 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'evap_sic', & 154 "evaporation at surface "//clnsurf(4),"kg/(s*m2)", (/ ('', i=1, 9) /)) /) 155 156 TYPE(ctrl_out), SAVE :: o_msnow = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 157 'msnow', 'Surface snow amount', 'kg/m2', (/ ('', i=1, 9) /)) 158 TYPE(ctrl_out), SAVE :: o_fsnow = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 159 'fsnow', 'Surface snow area fraction', '-', (/ ('', i=1, 9) /)) 160 TYPE(ctrl_out), SAVE :: o_tops = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 161 'tops', 'Solar rad. at TOA', 'W/m2', (/ ('', i=1, 9) /)) 162 TYPE(ctrl_out), SAVE :: o_tops0 = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 163 'tops0', 'CS Solar rad. at TOA', 'W/m2', (/ ('', i=1, 9) /)) 164 TYPE(ctrl_out), SAVE :: o_topl = ctrl_out((/ 1, 1, 10, 5, 10, 10, 11, 11, 11 /), & 165 'topl', 'IR rad. at TOA', 'W/m2', (/ ('', i=1, 9) /)) 166 TYPE(ctrl_out), SAVE :: o_topl0 = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 167 'topl0', 'IR rad. at TOA', 'W/m2', (/ ('', i=1, 9) /)) 168 TYPE(ctrl_out), SAVE :: o_SWupTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 169 'SWupTOA', 'SWup at TOA', 'W/m2', (/ ('', i=1, 9) /)) 170 TYPE(ctrl_out), SAVE :: o_SWupTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 171 'SWupTOAclr', 'SWup clear sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 172 TYPE(ctrl_out), SAVE :: o_SWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 173 'SWdnTOA', 'SWdn at TOA', 'W/m2', (/ ('', i=1, 9) /)) 174 TYPE(ctrl_out), SAVE :: o_SWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 175 'SWdnTOAclr', 'SWdn clear sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 176 TYPE(ctrl_out), SAVE :: o_nettop = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 177 'nettop', 'Net dn radiatif flux at TOA', 'W/m2', (/ ('', i=1, 9) /)) 178 TYPE(ctrl_out), SAVE :: o_SWup200 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 179 'SWup200', 'SWup at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 180 TYPE(ctrl_out), SAVE :: o_SWup200clr = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 181 'SWup200clr', 'SWup clear sky at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 182 TYPE(ctrl_out), SAVE :: o_SWdn200 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 183 'SWdn200', 'SWdn at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 184 TYPE(ctrl_out), SAVE :: o_SWdn200clr = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 185 'SWdn200clr', 'SWdn clear sky at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 172 186 173 187 ! arajouter 174 ! type(ctrl_out),save :: o_LWupTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'LWupTOA', &175 ! (/ ('', i=1, 6) /))176 ! type(ctrl_out),save :: o_LWupTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'LWupTOAclr', &177 ! (/ ('', i=1, 6) /))178 ! type(ctrl_out),save :: o_LWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'LWdnTOA', &179 ! (/ ('', i=1, 6) /))180 ! type(ctrl_out),save :: o_LWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'LWdnTOAclr', &181 ! (/ ('', i=1, 6) /))182 TYPE(ctrl_out), SAVE :: o_LWup200 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &183 'LWup200', 'LWup at 200mb', 'W/m2', (/ ('', i=1, 6) /))184 TYPE(ctrl_out), SAVE :: o_LWup200clr = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &185 'LWup200clr', 'LWup clear sky at 200mb', 'W/m2', (/ ('', i=1, 6) /))186 TYPE(ctrl_out), SAVE :: o_LWdn200 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &187 'LWdn200', 'LWdn at 200mb', 'W/m2', (/ ('', i=1, 6) /))188 TYPE(ctrl_out), SAVE :: o_LWdn200clr = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &189 'LWdn200clr', 'LWdn clear sky at 200mb', 'W/m2', (/ ('', i=1, 6) /))190 TYPE(ctrl_out), SAVE :: o_sols = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &191 'sols', 'Solar rad. at surf.', 'W/m2', (/ ('', i=1, 6) /))192 TYPE(ctrl_out), SAVE :: o_sols0 = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &193 'sols0', 'Solar rad. at surf.', 'W/m2', (/ ('', i=1, 6) /))194 TYPE(ctrl_out), SAVE :: o_soll = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &195 'soll', 'IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /))196 TYPE(ctrl_out), SAVE :: o_soll0 = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &197 'soll0', 'IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /))198 TYPE(ctrl_out), SAVE :: o_radsol = ctrl_out((/ 1, 7, 10, 10, 10, 10 /), &199 'radsol', 'Rayonnement au sol', 'W/m2', (/ ('', i=1, 6) /))200 TYPE(ctrl_out), SAVE :: o_SWupSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &201 'SWupSFC', 'SWup at surface', 'W/m2', (/ ('', i=1, 6) /))202 TYPE(ctrl_out), SAVE :: o_SWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &203 'SWupSFCclr', 'SWup clear sky at surface', 'W/m2', (/ ('', i=1, 6) /))204 TYPE(ctrl_out), SAVE :: o_SWdnSFC = ctrl_out((/ 1, 1, 10, 10, 5, 10 /), &205 'SWdnSFC', 'SWdn at surface', 'W/m2', (/ ('', i=1, 6) /))206 TYPE(ctrl_out), SAVE :: o_SWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &207 'SWdnSFCclr', 'SWdn clear sky at surface', 'W/m2', (/ ('', i=1, 6) /))208 TYPE(ctrl_out), SAVE :: o_LWupSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &209 'LWupSFC', 'Upwd. IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /))210 TYPE(ctrl_out), SAVE :: o_LWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &211 'LWupSFCclr', 'CS Upwd. IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /))212 TYPE(ctrl_out), SAVE :: o_LWdnSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &213 'LWdnSFC', 'Down. IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /))214 TYPE(ctrl_out), SAVE :: o_LWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &215 'LWdnSFCclr', 'Down. CS IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /))216 TYPE(ctrl_out), SAVE :: o_bils = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &217 'bils', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))218 TYPE(ctrl_out), SAVE :: o_bils_tke = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &219 'bils_tke', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))220 TYPE(ctrl_out), SAVE :: o_bils_diss = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &221 'bils_diss', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))222 TYPE(ctrl_out), SAVE :: o_bils_ec = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &223 'bils_ec', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))224 TYPE(ctrl_out), SAVE :: o_bils_kinetic = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &225 'bils_kinetic', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))226 TYPE(ctrl_out), SAVE :: o_bils_enthalp = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &227 'bils_enthalp', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))228 TYPE(ctrl_out), SAVE :: o_bils_latent = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &229 'bils_latent', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))230 TYPE(ctrl_out), SAVE :: o_sens = ctrl_out((/ 1, 1, 10, 10, 5, 10 /), &231 'sens', 'Sensible heat flux', 'W/m2', (/ ('', i=1, 6) /))232 TYPE(ctrl_out), SAVE :: o_fder = ctrl_out((/ 1, 2, 10, 10, 10, 10 /), &233 'fder', 'Heat flux derivation', 'W/m2', (/ ('', i=1, 6) /))234 TYPE(ctrl_out), SAVE :: o_ffonte = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &235 'ffonte', 'Thermal flux for snow melting', 'W/m2', (/ ('', i=1, 6) /))236 TYPE(ctrl_out), SAVE :: o_fqcalving = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &237 'fqcalving', 'Ice Calving', 'kg/m2/s', (/ ('', i=1, 6) /))238 TYPE(ctrl_out), SAVE :: o_fqfonte = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &239 'fqfonte', 'Land ice melt', 'kg/m2/s', (/ ('', i=1, 6) /))240 TYPE(ctrl_out), SAVE :: o_taux = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &241 'taux', 'Zonal wind stress', 'Pa', (/ ('', i=1, 6) /))242 TYPE(ctrl_out), SAVE :: o_tauy = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &243 'tauy', 'Meridional wind stress', 'Pa', (/ ('', i=1, 6) /))188 ! type(ctrl_out),save :: o_LWupTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /),'LWupTOA', & 189 ! (/ ('', i=1, 9) /)) 190 ! type(ctrl_out),save :: o_LWupTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /),'LWupTOAclr', & 191 ! (/ ('', i=1, 9) /)) 192 ! type(ctrl_out),save :: o_LWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /),'LWdnTOA', & 193 ! (/ ('', i=1, 9) /)) 194 ! type(ctrl_out),save :: o_LWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /),'LWdnTOAclr', & 195 ! (/ ('', i=1, 9) /)) 196 TYPE(ctrl_out), SAVE :: o_LWup200 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 197 'LWup200', 'LWup at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 198 TYPE(ctrl_out), SAVE :: o_LWup200clr = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 199 'LWup200clr', 'LWup clear sky at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 200 TYPE(ctrl_out), SAVE :: o_LWdn200 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 201 'LWdn200', 'LWdn at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 202 TYPE(ctrl_out), SAVE :: o_LWdn200clr = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 203 'LWdn200clr', 'LWdn clear sky at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 204 TYPE(ctrl_out), SAVE :: o_sols = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 205 'sols', 'Solar rad. at surf.', 'W/m2', (/ ('', i=1, 9) /)) 206 TYPE(ctrl_out), SAVE :: o_sols0 = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 207 'sols0', 'Solar rad. at surf.', 'W/m2', (/ ('', i=1, 9) /)) 208 TYPE(ctrl_out), SAVE :: o_soll = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 209 'soll', 'IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 210 TYPE(ctrl_out), SAVE :: o_soll0 = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 211 'soll0', 'IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 212 TYPE(ctrl_out), SAVE :: o_radsol = ctrl_out((/ 1, 7, 10, 10, 10, 10, 11, 11, 11 /), & 213 'radsol', 'Rayonnement au sol', 'W/m2', (/ ('', i=1, 9) /)) 214 TYPE(ctrl_out), SAVE :: o_SWupSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 215 'SWupSFC', 'SWup at surface', 'W/m2', (/ ('', i=1, 9) /)) 216 TYPE(ctrl_out), SAVE :: o_SWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 217 'SWupSFCclr', 'SWup clear sky at surface', 'W/m2', (/ ('', i=1, 9) /)) 218 TYPE(ctrl_out), SAVE :: o_SWdnSFC = ctrl_out((/ 1, 1, 10, 10, 5, 10, 11, 11, 11 /), & 219 'SWdnSFC', 'SWdn at surface', 'W/m2', (/ ('', i=1, 9) /)) 220 TYPE(ctrl_out), SAVE :: o_SWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 221 'SWdnSFCclr', 'SWdn clear sky at surface', 'W/m2', (/ ('', i=1, 9) /)) 222 TYPE(ctrl_out), SAVE :: o_LWupSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 223 'LWupSFC', 'Upwd. IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 224 TYPE(ctrl_out), SAVE :: o_LWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 225 'LWupSFCclr', 'CS Upwd. IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 226 TYPE(ctrl_out), SAVE :: o_LWdnSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 227 'LWdnSFC', 'Down. IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 228 TYPE(ctrl_out), SAVE :: o_LWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 229 'LWdnSFCclr', 'Down. CS IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 230 TYPE(ctrl_out), SAVE :: o_bils = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 231 'bils', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 232 TYPE(ctrl_out), SAVE :: o_bils_tke = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 233 'bils_tke', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 234 TYPE(ctrl_out), SAVE :: o_bils_diss = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 235 'bils_diss', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 236 TYPE(ctrl_out), SAVE :: o_bils_ec = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 237 'bils_ec', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 238 TYPE(ctrl_out), SAVE :: o_bils_kinetic = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 239 'bils_kinetic', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 240 TYPE(ctrl_out), SAVE :: o_bils_enthalp = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 241 'bils_enthalp', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 242 TYPE(ctrl_out), SAVE :: o_bils_latent = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 243 'bils_latent', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 244 TYPE(ctrl_out), SAVE :: o_sens = ctrl_out((/ 1, 1, 10, 10, 5, 10, 11, 11, 11 /), & 245 'sens', 'Sensible heat flux', 'W/m2', (/ ('', i=1, 9) /)) 246 TYPE(ctrl_out), SAVE :: o_fder = ctrl_out((/ 1, 2, 10, 10, 10, 10, 11, 11, 11 /), & 247 'fder', 'Heat flux derivation', 'W/m2', (/ ('', i=1, 9) /)) 248 TYPE(ctrl_out), SAVE :: o_ffonte = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 249 'ffonte', 'Thermal flux for snow melting', 'W/m2', (/ ('', i=1, 9) /)) 250 TYPE(ctrl_out), SAVE :: o_fqcalving = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 251 'fqcalving', 'Ice Calving', 'kg/m2/s', (/ ('', i=1, 9) /)) 252 TYPE(ctrl_out), SAVE :: o_fqfonte = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 253 'fqfonte', 'Land ice melt', 'kg/m2/s', (/ ('', i=1, 9) /)) 254 TYPE(ctrl_out), SAVE :: o_taux = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 255 'taux', 'Zonal wind stress', 'Pa', (/ ('', i=1, 9) /)) 256 TYPE(ctrl_out), SAVE :: o_tauy = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 257 'tauy', 'Meridional wind stress', 'Pa', (/ ('', i=1, 9) /)) 244 258 245 259 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_taux_srf = (/ & 246 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'taux_ter', &247 "Zonal wind stress"//clnsurf(1), "Pa", (/ ('', i=1, 6) /)), &248 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'taux_lic', &249 "Zonal wind stress"//clnsurf(2), "Pa", (/ ('', i=1, 6) /)), &250 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'taux_oce', &251 "Zonal wind stress"//clnsurf(3), "Pa", (/ ('', i=1, 6) /)), &252 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'taux_sic', &253 "Zonal wind stress"//clnsurf(4), "Pa", (/ ('', i=1, 6) /)) /)260 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'taux_ter', & 261 "Zonal wind stress"//clnsurf(1), "Pa", (/ ('', i=1, 9) /)), & 262 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'taux_lic', & 263 "Zonal wind stress"//clnsurf(2), "Pa", (/ ('', i=1, 9) /)), & 264 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'taux_oce', & 265 "Zonal wind stress"//clnsurf(3), "Pa", (/ ('', i=1, 9) /)), & 266 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'taux_sic', & 267 "Zonal wind stress"//clnsurf(4), "Pa", (/ ('', i=1, 9) /)) /) 254 268 255 269 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_tauy_srf = (/ & 256 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tauy_ter', &257 "Meridional wind stress "//clnsurf(1),"Pa", (/ ('', i=1, 6) /)), &258 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tauy_lic', &259 "Meridional wind stress "//clnsurf(2),"Pa", (/ ('', i=1, 6) /)), &260 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tauy_oce', &261 "Meridional wind stress "//clnsurf(3),"Pa", (/ ('', i=1, 6) /)), &262 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tauy_sic', &263 "Meridional wind stress "//clnsurf(4),"Pa", (/ ('', i=1, 6) /)) /)270 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tauy_ter', & 271 "Meridional wind stress "//clnsurf(1),"Pa", (/ ('', i=1, 9) /)), & 272 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tauy_lic', & 273 "Meridional wind stress "//clnsurf(2),"Pa", (/ ('', i=1, 9) /)), & 274 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tauy_oce', & 275 "Meridional wind stress "//clnsurf(3),"Pa", (/ ('', i=1, 9) /)), & 276 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tauy_sic', & 277 "Meridional wind stress "//clnsurf(4),"Pa", (/ ('', i=1, 9) /)) /) 264 278 265 279 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_pourc_srf = (/ & 266 ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'pourc_ter', &267 "% "//clnsurf(1),"%", (/ ('', i=1, 6) /)), &268 ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'pourc_lic', &269 "% "//clnsurf(2),"%", (/ ('', i=1, 6) /)), &270 ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'pourc_oce', &271 "% "//clnsurf(3),"%", (/ ('', i=1, 6) /)), &272 ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'pourc_sic', &273 "% "//clnsurf(4),"%", (/ ('', i=1, 6) /)) /)280 ctrl_out((/ 1, 7, 10, 10, 10, 10, 11, 11, 11 /),'pourc_ter', & 281 "% "//clnsurf(1),"%", (/ ('', i=1, 9) /)), & 282 ctrl_out((/ 1, 7, 10, 10, 10, 10, 11, 11, 11 /),'pourc_lic', & 283 "% "//clnsurf(2),"%", (/ ('', i=1, 9) /)), & 284 ctrl_out((/ 1, 7, 10, 10, 10, 10, 11, 11, 11 /),'pourc_oce', & 285 "% "//clnsurf(3),"%", (/ ('', i=1, 9) /)), & 286 ctrl_out((/ 1, 7, 10, 10, 10, 10, 11, 11, 11 /),'pourc_sic', & 287 "% "//clnsurf(4),"%", (/ ('', i=1, 9) /)) /) 274 288 275 289 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_fract_srf = (/ & 276 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'fract_ter', &277 "Fraction "//clnsurf(1),"1", (/ ('', i=1, 6) /)), &278 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'fract_lic', &279 "Fraction "//clnsurf(2),"1", (/ ('', i=1, 6) /)), &280 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'fract_oce', &281 "Fraction "//clnsurf(3),"1", (/ ('', i=1, 6) /)), &282 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'fract_sic', &283 "Fraction "//clnsurf(4),"1", (/ ('', i=1, 6) /)) /)290 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'fract_ter', & 291 "Fraction "//clnsurf(1),"1", (/ ('', i=1, 9) /)), & 292 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'fract_lic', & 293 "Fraction "//clnsurf(2),"1", (/ ('', i=1, 9) /)), & 294 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'fract_oce', & 295 "Fraction "//clnsurf(3),"1", (/ ('', i=1, 9) /)), & 296 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'fract_sic', & 297 "Fraction "//clnsurf(4),"1", (/ ('', i=1, 9) /)) /) 284 298 285 299 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_tsol_srf = (/ & 286 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tsol_ter', &287 "Temperature "//clnsurf(1),"K", (/ ('', i=1, 6) /)), &288 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tsol_lic', &289 "Temperature "//clnsurf(2),"K", (/ ('', i=1, 6) /)), &290 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tsol_oce', &291 "Temperature "//clnsurf(3),"K", (/ ('', i=1, 6) /)), &292 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tsol_sic', &293 "Temperature "//clnsurf(4),"K", (/ ('', i=1, 6) /)) /)300 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tsol_ter', & 301 "Temperature "//clnsurf(1),"K", (/ ('', i=1, 9) /)), & 302 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tsol_lic', & 303 "Temperature "//clnsurf(2),"K", (/ ('', i=1, 9) /)), & 304 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tsol_oce', & 305 "Temperature "//clnsurf(3),"K", (/ ('', i=1, 9) /)), & 306 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tsol_sic', & 307 "Temperature "//clnsurf(4),"K", (/ ('', i=1, 9) /)) /) 294 308 295 309 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_evappot_srf = (/ & 296 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evappot_ter', &297 "Temperature"//clnsurf(1),"K", (/ ('', i=1, 6) /)), &298 ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'evappot_lic', &299 "Temperature"//clnsurf(2),"K", (/ ('', i=1, 6) /)), &300 ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'evappot_oce', &301 "Temperature"//clnsurf(3),"K", (/ ('', i=1, 6) /)), &302 ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'evappot_sic', &303 "Temperature"//clnsurf(4),"K", (/ ('', i=1, 6) /)) /)310 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'evappot_ter', & 311 "Temperature"//clnsurf(1),"K", (/ ('', i=1, 9) /)), & 312 ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /),'evappot_lic', & 313 "Temperature"//clnsurf(2),"K", (/ ('', i=1, 9) /)), & 314 ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /),'evappot_oce', & 315 "Temperature"//clnsurf(3),"K", (/ ('', i=1, 9) /)), & 316 ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /),'evappot_sic', & 317 "Temperature"//clnsurf(4),"K", (/ ('', i=1, 9) /)) /) 304 318 305 319 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_sens_srf = (/ & 306 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'sens_ter', &307 "Sensible heat flux "//clnsurf(1),"W/m2", (/ ('', i=1, 6) /)), &308 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'sens_lic', &309 "Sensible heat flux "//clnsurf(2),"W/m2", (/ ('', i=1, 6) /)), &310 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'sens_oce', &311 "Sensible heat flux "//clnsurf(3),"W/m2", (/ ('', i=1, 6) /)), &312 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'sens_sic', &313 "Sensible heat flux "//clnsurf(4),"W/m2", (/ ('', i=1, 6) /)) /)320 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'sens_ter', & 321 "Sensible heat flux "//clnsurf(1),"W/m2", (/ ('', i=1, 9) /)), & 322 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'sens_lic', & 323 "Sensible heat flux "//clnsurf(2),"W/m2", (/ ('', i=1, 9) /)), & 324 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'sens_oce', & 325 "Sensible heat flux "//clnsurf(3),"W/m2", (/ ('', i=1, 9) /)), & 326 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'sens_sic', & 327 "Sensible heat flux "//clnsurf(4),"W/m2", (/ ('', i=1, 9) /)) /) 314 328 315 329 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_lat_srf = (/ & 316 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'lat_ter', &317 "Latent heat flux "//clnsurf(1),"W/m2", (/ ('', i=1, 6) /)), &318 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'lat_lic', &319 "Latent heat flux "//clnsurf(2),"W/m2", (/ ('', i=1, 6) /)), &320 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'lat_oce', &321 "Latent heat flux "//clnsurf(3),"W/m2", (/ ('', i=1, 6) /)), &322 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'lat_sic', &323 "Latent heat flux "//clnsurf(4),"W/m2", (/ ('', i=1, 6) /)) /)330 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'lat_ter', & 331 "Latent heat flux "//clnsurf(1),"W/m2", (/ ('', i=1, 9) /)), & 332 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'lat_lic', & 333 "Latent heat flux "//clnsurf(2),"W/m2", (/ ('', i=1, 9) /)), & 334 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'lat_oce', & 335 "Latent heat flux "//clnsurf(3),"W/m2", (/ ('', i=1, 9) /)), & 336 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'lat_sic', & 337 "Latent heat flux "//clnsurf(4),"W/m2", (/ ('', i=1, 9) /)) /) 324 338 325 339 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_flw_srf = (/ & 326 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'flw_ter', &327 "LW "//clnsurf(1),"W/m2", (/ ('', i=1, 6) /)), &328 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'flw_lic', &329 "LW "//clnsurf(2),"W/m2", (/ ('', i=1, 6) /)), &330 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'flw_oce', &331 "LW "//clnsurf(3),"W/m2", (/ ('', i=1, 6) /)), &332 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'flw_sic', &333 "LW "//clnsurf(4),"W/m2", (/ ('', i=1, 6) /)) /)340 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'flw_ter', & 341 "LW "//clnsurf(1),"W/m2", (/ ('', i=1, 9) /)), & 342 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'flw_lic', & 343 "LW "//clnsurf(2),"W/m2", (/ ('', i=1, 9) /)), & 344 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'flw_oce', & 345 "LW "//clnsurf(3),"W/m2", (/ ('', i=1, 9) /)), & 346 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'flw_sic', & 347 "LW "//clnsurf(4),"W/m2", (/ ('', i=1, 9) /)) /) 334 348 335 349 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_fsw_srf = (/ & 336 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsw_ter', &337 "SW "//clnsurf(1),"W/m2", (/ ('', i=1, 6) /)), &338 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsw_lic', &339 "SW "//clnsurf(2),"W/m2", (/ ('', i=1, 6) /)), &340 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsw_oce', &341 "SW "//clnsurf(3),"W/m2", (/ ('', i=1, 6) /)), &342 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsw_sic', &343 "SW "//clnsurf(4),"W/m2", (/ ('', i=1, 6) /)) /)350 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'fsw_ter', & 351 "SW "//clnsurf(1),"W/m2", (/ ('', i=1, 9) /)), & 352 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'fsw_lic', & 353 "SW "//clnsurf(2),"W/m2", (/ ('', i=1, 9) /)), & 354 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'fsw_oce', & 355 "SW "//clnsurf(3),"W/m2", (/ ('', i=1, 9) /)), & 356 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'fsw_sic', & 357 "SW "//clnsurf(4),"W/m2", (/ ('', i=1, 9) /)) /) 344 358 345 359 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_wbils_srf = (/ & 346 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbils_ter', &347 "Bilan sol "//clnsurf(1),"W/m2", (/ ('', i=1, 6) /)), &348 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbils_lic', &349 "Bilan sol "//clnsurf(2),"W/m2", (/ ('', i=1, 6) /)), &350 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbils_oce', &351 "Bilan sol "//clnsurf(3),"W/m2", (/ ('', i=1, 6) /)), &352 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbils_sic', &353 "Bilan sol "//clnsurf(4),"W/m2", (/ ('', i=1, 6) /)) /)360 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbils_ter', & 361 "Bilan sol "//clnsurf(1),"W/m2", (/ ('', i=1, 9) /)), & 362 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbils_lic', & 363 "Bilan sol "//clnsurf(2),"W/m2", (/ ('', i=1, 9) /)), & 364 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbils_oce', & 365 "Bilan sol "//clnsurf(3),"W/m2", (/ ('', i=1, 9) /)), & 366 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbils_sic', & 367 "Bilan sol "//clnsurf(4),"W/m2", (/ ('', i=1, 9) /)) /) 354 368 355 369 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_wbilo_srf = (/ & 356 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbilo_ter', &357 "Bilan eau "//clnsurf(1),"kg/(m2*s)", (/ ('', i=1, 6) /)), &358 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbilo_lic', &359 "Bilan eau "//clnsurf(2),"kg/(m2*s)", (/ ('', i=1, 6) /)), &360 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbilo_oce', &361 "Bilan eau "//clnsurf(3),"kg/(m2*s)", (/ ('', i=1, 6) /)), &362 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbilo_sic', &363 "Bilan eau "//clnsurf(4),"kg/(m2*s)", (/ ('', i=1, 6) /)) /)364 365 TYPE(ctrl_out), SAVE :: o_cdrm = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &366 'cdrm', 'Momentum drag coef.', '-', (/ ('', i=1, 6) /))367 TYPE(ctrl_out), SAVE :: o_cdrh = ctrl_out((/ 1, 10, 10, 7, 10, 10 /), &368 'cdrh', 'Heat drag coef.', '-', (/ ('', i=1, 6) /))369 TYPE(ctrl_out), SAVE :: o_cldl = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &370 'cldl', 'Low-level cloudiness', '-', (/ ('', i=1, 6) /))371 TYPE(ctrl_out), SAVE :: o_cldm = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &372 'cldm', 'Mid-level cloudiness', '-', (/ ('', i=1, 6) /))373 TYPE(ctrl_out), SAVE :: o_cldh = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &374 'cldh', 'High-level cloudiness', '-', (/ ('', i=1, 6) /))375 TYPE(ctrl_out), SAVE :: o_cldt = ctrl_out((/ 1, 1, 2, 10, 5, 10 /), &376 'cldt', 'Total cloudiness', '-', (/ ('', i=1, 6) /))377 TYPE(ctrl_out), SAVE :: o_cldq = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &378 'cldq', 'Cloud liquid water path', 'kg/m2', (/ ('', i=1, 6) /))379 TYPE(ctrl_out), SAVE :: o_lwp = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &380 'lwp', 'Cloud water path', 'kg/m2', (/ ('', i=1, 6) /))381 TYPE(ctrl_out), SAVE :: o_iwp = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &382 'iwp', 'Cloud ice water path', 'kg/m2', (/ ('', i=1, 6) /))383 TYPE(ctrl_out), SAVE :: o_ue = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &384 'ue', 'Zonal energy transport', '-', (/ ('', i=1, 6) /))385 TYPE(ctrl_out), SAVE :: o_ve = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &386 've', 'Merid energy transport', '-', (/ ('', i=1, 6) /))387 TYPE(ctrl_out), SAVE :: o_uq = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &388 'uq', 'Zonal humidity transport', '-', (/ ('', i=1, 6) /))389 TYPE(ctrl_out), SAVE :: o_vq = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &390 'vq', 'Merid humidity transport', '-', (/ ('', i=1, 6) /))391 TYPE(ctrl_out), SAVE :: o_cape = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &392 'cape', 'Conv avlbl pot ener', 'J/kg', (/ ('', i=1, 6) /))393 TYPE(ctrl_out), SAVE :: o_pbase = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &394 'pbase', 'Cld base pressure', 'Pa', (/ ('', i=1, 6) /))395 TYPE(ctrl_out), SAVE :: o_ptop = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &396 'ptop', 'Cld top pressure', 'Pa', (/ ('', i=1, 6) /))397 TYPE(ctrl_out), SAVE :: o_fbase = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &398 'fbase', 'Cld base mass flux', 'kg/m2/s', (/ ('', i=1, 6) /))399 TYPE(ctrl_out), SAVE :: o_plcl = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &400 'plcl', 'Lifting Condensation Level', 'hPa', (/ ('', i=1, 6) /))401 TYPE(ctrl_out), SAVE :: o_plfc = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &402 'plfc', 'Level of Free Convection', 'hPa', (/ ('', i=1, 6) /))403 TYPE(ctrl_out), SAVE :: o_wbeff = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &404 'wbeff', 'Conv. updraft velocity at LFC (<100)', 'm/s', (/ ('', i=1, 6) /))405 TYPE(ctrl_out), SAVE :: o_prw = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &406 'prw', 'Precipitable water', 'kg/m2', (/ ('', i=1, 6) /))407 TYPE(ctrl_out), SAVE :: o_s_pblh = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &408 's_pblh', 'Boundary Layer Height', 'm', (/ ('', i=1, 6) /))409 TYPE(ctrl_out), SAVE :: o_s_pblt = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &410 's_pblt', 't at Boundary Layer Height', 'K', (/ ('', i=1, 6) /))411 TYPE(ctrl_out), SAVE :: o_s_lcl = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &412 's_lcl', 'Condensation level', 'm', (/ ('', i=1, 6) /))413 TYPE(ctrl_out), SAVE :: o_s_therm = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &414 's_therm', 'Exces du thermique', 'K', (/ ('', i=1, 6) /))370 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbilo_ter', & 371 "Bilan eau "//clnsurf(1),"kg/(m2*s)", (/ ('', i=1, 9) /)), & 372 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbilo_lic', & 373 "Bilan eau "//clnsurf(2),"kg/(m2*s)", (/ ('', i=1, 9) /)), & 374 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbilo_oce', & 375 "Bilan eau "//clnsurf(3),"kg/(m2*s)", (/ ('', i=1, 9) /)), & 376 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbilo_sic', & 377 "Bilan eau "//clnsurf(4),"kg/(m2*s)", (/ ('', i=1, 9) /)) /) 378 379 TYPE(ctrl_out), SAVE :: o_cdrm = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 380 'cdrm', 'Momentum drag coef.', '-', (/ ('', i=1, 9) /)) 381 TYPE(ctrl_out), SAVE :: o_cdrh = ctrl_out((/ 1, 10, 10, 7, 10, 10, 11, 11, 11 /), & 382 'cdrh', 'Heat drag coef.', '-', (/ ('', i=1, 9) /)) 383 TYPE(ctrl_out), SAVE :: o_cldl = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 384 'cldl', 'Low-level cloudiness', '-', (/ ('', i=1, 9) /)) 385 TYPE(ctrl_out), SAVE :: o_cldm = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 386 'cldm', 'Mid-level cloudiness', '-', (/ ('', i=1, 9) /)) 387 TYPE(ctrl_out), SAVE :: o_cldh = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 388 'cldh', 'High-level cloudiness', '-', (/ ('', i=1, 9) /)) 389 TYPE(ctrl_out), SAVE :: o_cldt = ctrl_out((/ 1, 1, 2, 10, 5, 10, 11, 11, 11 /), & 390 'cldt', 'Total cloudiness', '-', (/ ('', i=1, 9) /)) 391 TYPE(ctrl_out), SAVE :: o_cldq = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 392 'cldq', 'Cloud liquid water path', 'kg/m2', (/ ('', i=1, 9) /)) 393 TYPE(ctrl_out), SAVE :: o_lwp = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 394 'lwp', 'Cloud water path', 'kg/m2', (/ ('', i=1, 9) /)) 395 TYPE(ctrl_out), SAVE :: o_iwp = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 396 'iwp', 'Cloud ice water path', 'kg/m2', (/ ('', i=1, 9) /)) 397 TYPE(ctrl_out), SAVE :: o_ue = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 398 'ue', 'Zonal energy transport', '-', (/ ('', i=1, 9) /)) 399 TYPE(ctrl_out), SAVE :: o_ve = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 400 've', 'Merid energy transport', '-', (/ ('', i=1, 9) /)) 401 TYPE(ctrl_out), SAVE :: o_uq = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 402 'uq', 'Zonal humidity transport', '-', (/ ('', i=1, 9) /)) 403 TYPE(ctrl_out), SAVE :: o_vq = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 404 'vq', 'Merid humidity transport', '-', (/ ('', i=1, 9) /)) 405 TYPE(ctrl_out), SAVE :: o_cape = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 406 'cape', 'Conv avlbl pot ener', 'J/kg', (/ ('', i=1, 9) /)) 407 TYPE(ctrl_out), SAVE :: o_pbase = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 408 'pbase', 'Cld base pressure', 'Pa', (/ ('', i=1, 9) /)) 409 TYPE(ctrl_out), SAVE :: o_ptop = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 410 'ptop', 'Cld top pressure', 'Pa', (/ ('', i=1, 9) /)) 411 TYPE(ctrl_out), SAVE :: o_fbase = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 412 'fbase', 'Cld base mass flux', 'kg/m2/s', (/ ('', i=1, 9) /)) 413 TYPE(ctrl_out), SAVE :: o_plcl = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 414 'plcl', 'Lifting Condensation Level', 'hPa', (/ ('', i=1, 9) /)) 415 TYPE(ctrl_out), SAVE :: o_plfc = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 416 'plfc', 'Level of Free Convection', 'hPa', (/ ('', i=1, 9) /)) 417 TYPE(ctrl_out), SAVE :: o_wbeff = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 418 'wbeff', 'Conv. updraft velocity at LFC (<100)', 'm/s', (/ ('', i=1, 9) /)) 419 TYPE(ctrl_out), SAVE :: o_prw = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 420 'prw', 'Precipitable water', 'kg/m2', (/ ('', i=1, 9) /)) 421 TYPE(ctrl_out), SAVE :: o_s_pblh = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 422 's_pblh', 'Boundary Layer Height', 'm', (/ ('', i=1, 9) /)) 423 TYPE(ctrl_out), SAVE :: o_s_pblt = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 424 's_pblt', 't at Boundary Layer Height', 'K', (/ ('', i=1, 9) /)) 425 TYPE(ctrl_out), SAVE :: o_s_lcl = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 426 's_lcl', 'Condensation level', 'm', (/ ('', i=1, 9) /)) 427 TYPE(ctrl_out), SAVE :: o_s_therm = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 428 's_therm', 'Exces du thermique', 'K', (/ ('', i=1, 9) /)) 415 429 !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F 416 ! type(ctrl_out),save :: o_s_capCL = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_capCL', &417 ! (/ ('', i=1, 6) /))418 ! type(ctrl_out),save :: o_s_oliqCL = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_oliqCL', &419 ! (/ ('', i=1, 6) /))420 ! type(ctrl_out),save :: o_s_cteiCL = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_cteiCL', &421 ! (/ ('', i=1, 6) /))422 ! type(ctrl_out),save :: o_s_trmb1 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_trmb1', &423 ! (/ ('', i=1, 6) /))424 ! type(ctrl_out),save :: o_s_trmb2 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_trmb2', &425 ! (/ ('', i=1, 6) /))426 ! type(ctrl_out),save :: o_s_trmb3 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_trmb3', &427 !(/ ('', i=1, 6) /))428 TYPE(ctrl_out), SAVE :: o_slab_bils = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &429 'slab_bils_oce', 'Bilan au sol sur ocean slab', 'W/m2', (/ ('', i=1, 6) /))430 TYPE(ctrl_out), SAVE :: o_ale_bl = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &431 'ale_bl', 'ALE BL', 'm2/s2', (/ ('', i=1, 6) /))432 TYPE(ctrl_out), SAVE :: o_alp_bl = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &433 'alp_bl', 'ALP BL', 'm2/s2', (/ ('', i=1, 6) /))434 TYPE(ctrl_out), SAVE :: o_ale_wk = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &435 'ale_wk', 'ALE WK', 'm2/s2', (/ ('', i=1, 6) /))436 TYPE(ctrl_out), SAVE :: o_alp_wk = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &437 'alp_wk', 'ALP WK', 'm2/s2', (/ ('', i=1, 6) /))438 TYPE(ctrl_out), SAVE :: o_ale = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &439 'ale', 'ALE', 'm2/s2', (/ ('', i=1, 6) /))440 TYPE(ctrl_out), SAVE :: o_alp = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &441 'alp', 'ALP', 'W/m2', (/ ('', i=1, 6) /))442 TYPE(ctrl_out), SAVE :: o_cin = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &443 'cin', 'Convective INhibition', 'm2/s2', (/ ('', i=1, 6) /))444 TYPE(ctrl_out), SAVE :: o_wape = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &445 'wape', '', '', (/ ('', i=1, 6) /))430 ! type(ctrl_out),save :: o_s_capCL = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_capCL', & 431 ! (/ ('', i=1, 9) /)) 432 ! type(ctrl_out),save :: o_s_oliqCL = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_oliqCL', & 433 ! (/ ('', i=1, 9) /)) 434 ! type(ctrl_out),save :: o_s_cteiCL = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_cteiCL', & 435 ! (/ ('', i=1, 9) /)) 436 ! type(ctrl_out),save :: o_s_trmb1 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_trmb1', & 437 ! (/ ('', i=1, 9) /)) 438 ! type(ctrl_out),save :: o_s_trmb2 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_trmb2', & 439 ! (/ ('', i=1, 9) /)) 440 ! type(ctrl_out),save :: o_s_trmb3 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_trmb3', & 441 !(/ ('', i=1, 9) /)) 442 TYPE(ctrl_out), SAVE :: o_slab_bils = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 443 'slab_bils_oce', 'Bilan au sol sur ocean slab', 'W/m2', (/ ('', i=1, 9) /)) 444 TYPE(ctrl_out), SAVE :: o_ale_bl = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 445 'ale_bl', 'ALE BL', 'm2/s2', (/ ('', i=1, 9) /)) 446 TYPE(ctrl_out), SAVE :: o_alp_bl = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 447 'alp_bl', 'ALP BL', 'm2/s2', (/ ('', i=1, 9) /)) 448 TYPE(ctrl_out), SAVE :: o_ale_wk = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 449 'ale_wk', 'ALE WK', 'm2/s2', (/ ('', i=1, 9) /)) 450 TYPE(ctrl_out), SAVE :: o_alp_wk = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 451 'alp_wk', 'ALP WK', 'm2/s2', (/ ('', i=1, 9) /)) 452 TYPE(ctrl_out), SAVE :: o_ale = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 453 'ale', 'ALE', 'm2/s2', (/ ('', i=1, 9) /)) 454 TYPE(ctrl_out), SAVE :: o_alp = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 455 'alp', 'ALP', 'W/m2', (/ ('', i=1, 9) /)) 456 TYPE(ctrl_out), SAVE :: o_cin = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 457 'cin', 'Convective INhibition', 'm2/s2', (/ ('', i=1, 9) /)) 458 TYPE(ctrl_out), SAVE :: o_wape = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 459 'wape', '', '', (/ ('', i=1, 9) /)) 446 460 447 461 !!! nrlmd le 10/04/2012 448 462 449 463 !-------Spectre de thermiques de type 2 au LCL 450 TYPE(ctrl_out), SAVE :: o_n2 = ctrl_out((/ 1, 1, 1, 6, 10, 10 /), &451 'n2', 'Nombre de panaches de type 2', ' ', (/ ('', i=1, 6) /))452 TYPE(ctrl_out), SAVE :: o_s2 = ctrl_out((/ 1, 1, 1, 6, 10, 10 /), &453 's2', 'Surface moyenne des panaches de type 2', 'm2', (/ ('', i=1, 6) /))464 TYPE(ctrl_out), SAVE :: o_n2 = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 465 'n2', 'Nombre de panaches de type 2', ' ', (/ ('', i=1, 9) /)) 466 TYPE(ctrl_out), SAVE :: o_s2 = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 467 's2', 'Surface moyenne des panaches de type 2', 'm2', (/ ('', i=1, 9) /)) 454 468 455 469 !-------Déclenchement stochastique 456 TYPE(ctrl_out), SAVE :: o_proba_notrig = ctrl_out((/ 1, 1, 1, 6, 10, 10 /), &457 458 'Probabilité de non-déclenchement', ' ', (/ ('', i=1, 6) /))459 TYPE(ctrl_out), SAVE :: o_random_notrig = ctrl_out((/ 1, 1, 1, 6, 10, 10 /), &460 461 'Tirage aléatoire de non-déclenchement', ' ', (/ ('', i=1, 6) /))462 TYPE(ctrl_out), SAVE :: o_ale_bl_stat = ctrl_out((/ 1, 1, 1, 6, 10, 10 /), &463 464 'ALE_BL_STAT', 'm2/s2', (/ ('', i=1, 6) /))465 TYPE(ctrl_out), SAVE :: o_ale_bl_trig = ctrl_out((/ 1, 1, 1, 6, 10, 10 /), &466 467 'ALE_BL_STAT + Condition P>Pseuil', 'm2/s2', (/ ('', i=1, 6) /))470 TYPE(ctrl_out), SAVE :: o_proba_notrig = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 471 'proba_notrig', & 472 'Probabilité de non-déclenchement', ' ', (/ ('', i=1, 9) /)) 473 TYPE(ctrl_out), SAVE :: o_random_notrig = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 474 'random_notrig', & 475 'Tirage aléatoire de non-déclenchement', ' ', (/ ('', i=1, 9) /)) 476 TYPE(ctrl_out), SAVE :: o_ale_bl_stat = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 477 'ale_bl_stat', & 478 'ALE_BL_STAT', 'm2/s2', (/ ('', i=1, 9) /)) 479 TYPE(ctrl_out), SAVE :: o_ale_bl_trig = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 480 'ale_bl_trig', & 481 'ALE_BL_STAT + Condition P>Pseuil', 'm2/s2', (/ ('', i=1, 9) /)) 468 482 469 483 !-------Fermeture statistique 470 TYPE(ctrl_out), SAVE :: o_alp_bl_det = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &471 'alp_bl_det', 'ALP_BL_DET', 'W/m2', (/ ('', i=1, 6) /))472 TYPE(ctrl_out), SAVE :: o_alp_bl_fluct_m = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &473 'alp_bl_fluct_m', 'ALP_BL_FLUCT_M', 'W/m2', (/ ('', i=1, 6) /))474 TYPE(ctrl_out), SAVE :: o_alp_bl_fluct_tke = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &475 'alp_bl_fluct_tke', 'ALP_BL_FLUCT_TKE', 'W/m2', (/ ('', i=1, 6) /))476 TYPE(ctrl_out), SAVE :: o_alp_bl_conv = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &477 'alp_bl_conv', 'ALP_BL_CONV', 'W/m2', (/ ('', i=1, 6) /))478 TYPE(ctrl_out), SAVE :: o_alp_bl_stat = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &479 'alp_bl_stat', 'ALP_BL_STAT', 'W/m2', (/ ('', i=1, 6) /))484 TYPE(ctrl_out), SAVE :: o_alp_bl_det = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 485 'alp_bl_det', 'ALP_BL_DET', 'W/m2', (/ ('', i=1, 9) /)) 486 TYPE(ctrl_out), SAVE :: o_alp_bl_fluct_m = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 487 'alp_bl_fluct_m', 'ALP_BL_FLUCT_M', 'W/m2', (/ ('', i=1, 9) /)) 488 TYPE(ctrl_out), SAVE :: o_alp_bl_fluct_tke = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 489 'alp_bl_fluct_tke', 'ALP_BL_FLUCT_TKE', 'W/m2', (/ ('', i=1, 9) /)) 490 TYPE(ctrl_out), SAVE :: o_alp_bl_conv = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 491 'alp_bl_conv', 'ALP_BL_CONV', 'W/m2', (/ ('', i=1, 9) /)) 492 TYPE(ctrl_out), SAVE :: o_alp_bl_stat = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 493 'alp_bl_stat', 'ALP_BL_STAT', 'W/m2', (/ ('', i=1, 9) /)) 480 494 481 495 !!! fin nrlmd le 10/04/2012 … … 484 498 485 499 TYPE(ctrl_out), SAVE, DIMENSION(7) :: o_uSTDlevs = (/ & 486 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u850', "Zonal wind 1hPa", "m/s", &487 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &488 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u700', "Zonal wind 2hPa", "m/s", &489 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &490 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u500', "Zonal wind 3hPa", "m/s", &491 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &492 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u200', "Zonal wind 4hPa", "m/s", &493 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &494 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u100', "Zonal wind 5hPa", "m/s", &495 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &496 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u50', "Zonal wind 6hPa", "m/s", &497 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &498 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u10', "Zonal wind 7hPa", "m/s", &499 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /)500 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u850', "Zonal wind 1hPa", "m/s", & 501 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 502 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u700', "Zonal wind 2hPa", "m/s", & 503 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 504 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u500', "Zonal wind 3hPa", "m/s", & 505 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 506 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u200', "Zonal wind 4hPa", "m/s", & 507 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 508 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u100', "Zonal wind 5hPa", "m/s", & 509 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 510 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u50', "Zonal wind 6hPa", "m/s", & 511 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 512 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u10', "Zonal wind 7hPa", "m/s", & 513 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /) 500 514 501 515 TYPE(ctrl_out), SAVE, DIMENSION(7) :: o_vSTDlevs = (/ & 502 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v850', "Meridional wind 1hPa", "m/s", &503 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &504 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v700', "Meridional wind 2hPa", "m/s", &505 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &506 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v500', "Meridional wind 3hPa", "m/s", &507 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &508 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v200', "Meridional wind 4hPa", "m/s", &509 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &510 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v100', "Meridional wind 5hPa", "m/s", &511 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &512 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v50', "Meridional wind 6hPa", "m/s", &513 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &514 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v10', "Meridional wind 7hPa", "m/s", &515 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /)516 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v850', "Meridional wind 1hPa", "m/s", & 517 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 518 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v700', "Meridional wind 2hPa", "m/s", & 519 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 520 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v500', "Meridional wind 3hPa", "m/s", & 521 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 522 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v200', "Meridional wind 4hPa", "m/s", & 523 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 524 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v100', "Meridional wind 5hPa", "m/s", & 525 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 526 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v50', "Meridional wind 6hPa", "m/s", & 527 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 528 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v10', "Meridional wind 7hPa", "m/s", & 529 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /) 516 530 517 531 TYPE(ctrl_out), SAVE, DIMENSION(7) :: o_wSTDlevs = (/ & 518 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w850', "Vertical wind 1hPa", "Pa/s", &519 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &520 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w700', "Vertical wind 2hPa", "Pa/s", &521 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &522 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w500', "Vertical wind 3hPa", "Pa/s", &523 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &524 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w200', "Vertical wind 4hPa", "Pa/s", &525 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &526 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w100', "Vertical wind 5hPa", "Pa/s", &527 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &528 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w50', "Vertical wind 6hPa", "Pa/s", &529 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &530 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w10', "Vertical wind 7hPa", "Pa/s", &531 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /)532 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w850', "Vertical wind 1hPa", "Pa/s", & 533 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 534 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w700', "Vertical wind 2hPa", "Pa/s", & 535 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 536 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w500', "Vertical wind 3hPa", "Pa/s", & 537 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 538 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w200', "Vertical wind 4hPa", "Pa/s", & 539 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 540 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w100', "Vertical wind 5hPa", "Pa/s", & 541 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 542 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w50', "Vertical wind 6hPa", "Pa/s", & 543 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 544 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w10', "Vertical wind 7hPa", "Pa/s", & 545 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /) 532 546 533 547 TYPE(ctrl_out), SAVE, DIMENSION(7) :: o_tSTDlevs = (/ & 534 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t850', "Temperature 1hPa", "K", &535 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &536 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t700', "Temperature 2hPa", "K", &537 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &538 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t500', "Temperature 3hPa", "K", &539 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &540 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t200', "Temperature 4hPa", "K", &541 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &542 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t100', "Temperature 5hPa", "K", &543 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &544 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t50', "Temperature 6hPa", "K", &545 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &546 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t10', "Temperature 7hPa", "K", &547 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /)548 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t850', "Temperature 1hPa", "K", & 549 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 550 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t700', "Temperature 2hPa", "K", & 551 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 552 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t500', "Temperature 3hPa", "K", & 553 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 554 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t200', "Temperature 4hPa", "K", & 555 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 556 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t100', "Temperature 5hPa", "K", & 557 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 558 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t50', "Temperature 6hPa", "K", & 559 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 560 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t10', "Temperature 7hPa", "K", & 561 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /) 548 562 549 563 TYPE(ctrl_out), SAVE, DIMENSION(7) :: o_qSTDlevs = (/ & 550 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q850', "Specific humidity 1hPa",&551 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &552 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q700', "Specific humidity 2hPa",&553 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &554 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q500', "Specific humidity 3hPa",&555 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &556 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q200', "Specific humidity 4hPa",&557 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &558 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q100', "Specific humidity 5hPa",&559 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &560 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q50', "Specific humidity 6hPa",&561 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &562 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q10', "Specific humidity 7hPa",&563 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /)564 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q850', "Specific humidity 1hPa", & 565 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 566 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q700', "Specific humidity 2hPa", & 567 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 568 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q500', "Specific humidity 3hPa", & 569 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 570 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q200', "Specific humidity 4hPa", & 571 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 572 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q100', "Specific humidity 5hPa", & 573 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 574 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q50', "Specific humidity 6hPa", & 575 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 576 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q10', "Specific humidity 7hPa", & 577 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /) 564 578 565 579 TYPE(ctrl_out), SAVE, DIMENSION(7) :: o_zSTDlevs = (/ & 566 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z850', "Geopotential height 1hPa", &567 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &568 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z700', "Geopotential height 2hPa", &569 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &570 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z500', "Geopotential height 3hPa", &571 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &572 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z200', "Geopotential height 4hPa", &573 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &574 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z100', "Geopotential height 5hPa", &575 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &576 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z50', "Geopotential height 6hPa", &577 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &578 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z10', "Geopotential height 7hPa", &579 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /)580 581 TYPE(ctrl_out), SAVE :: o_t_oce_sic = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &582 't_oce_sic', 'Temp mixte oce-sic', 'K', (/ ('', i=1, 6) /))583 TYPE(ctrl_out), SAVE :: o_weakinv = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), &584 'weakinv', 'Weak inversion', '-', (/ ('', i=1, 6) /))585 TYPE(ctrl_out), SAVE :: o_dthmin = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), &586 'dthmin', 'dTheta mini', 'K/m', (/ ('', i=1, 6) /))580 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z850', "Geopotential height 1hPa", & 581 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 582 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z700', "Geopotential height 2hPa", & 583 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 584 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z500', "Geopotential height 3hPa", & 585 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 586 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z200', "Geopotential height 4hPa", & 587 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 588 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z100', "Geopotential height 5hPa", & 589 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 590 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z50', "Geopotential height 6hPa", & 591 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 592 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z10', "Geopotential height 7hPa", & 593 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /) 594 595 TYPE(ctrl_out), SAVE :: o_t_oce_sic = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 596 't_oce_sic', 'Temp mixte oce-sic', 'K', (/ ('', i=1, 9) /)) 597 TYPE(ctrl_out), SAVE :: o_weakinv = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 598 'weakinv', 'Weak inversion', '-', (/ ('', i=1, 9) /)) 599 TYPE(ctrl_out), SAVE :: o_dthmin = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 600 'dthmin', 'dTheta mini', 'K/m', (/ ('', i=1, 9) /)) 587 601 588 602 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_u10_srf = (/ & 589 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'u10_ter', "", "", (/ ('', i=1, 6) /)), &590 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'u10_lic', "", "", (/ ('', i=1, 6) /)), &591 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'u10_oce', "", "", (/ ('', i=1, 6) /)), &592 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'u10_sic', "", "", (/ ('', i=1, 6) /)) /)603 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'u10_ter', "", "", (/ ('', i=1, 9) /)), & 604 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'u10_lic', "", "", (/ ('', i=1, 9) /)), & 605 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'u10_oce', "", "", (/ ('', i=1, 9) /)), & 606 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'u10_sic', "", "", (/ ('', i=1, 9) /)) /) 593 607 594 608 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_v10_srf = (/ & 595 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'v10_ter', "", "", (/ ('', i=1, 6) /)), & 596 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'v10_lic', "", "", (/ ('', i=1, 6) /)), & 597 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'v10_oce', "", "", (/ ('', i=1, 6) /)), & 598 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'v10_sic', "", "", (/ ('', i=1, 6) /)) /) 599 600 TYPE(ctrl_out), SAVE :: o_cldtau = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 601 'cldtau', 'Cloud optical thickness', '1', (/ ('', i=1, 6) /)) 602 TYPE(ctrl_out), SAVE :: o_cldemi = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 603 'cldemi', 'Cloud optical emissivity', '1', (/ ('', i=1, 6) /)) 604 TYPE(ctrl_out), SAVE :: o_rh2m = ctrl_out((/ 5, 5, 10, 10, 10, 10 /), & 605 'rh2m', 'Relative humidity at 2m', '%', (/ ('', i=1, 6) /)) 606 TYPE(ctrl_out), SAVE :: o_rh2m_min = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 607 'rh2m_min', 'Min Relative humidity at 2m', '%', & 608 (/ 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)' /)) 609 TYPE(ctrl_out), SAVE :: o_rh2m_max = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 610 'rh2m_max', 'Max Relative humidity at 2m', '%', & 611 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)' /)) 612 TYPE(ctrl_out), SAVE :: o_qsat2m = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 613 'qsat2m', 'Saturant humidity at 2m', '%', (/ ('', i=1, 6) /)) 614 TYPE(ctrl_out), SAVE :: o_tpot = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 615 'tpot', 'Surface air potential temperature', 'K', (/ ('', i=1, 6) /)) 616 TYPE(ctrl_out), SAVE :: o_tpote = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 617 'tpote', & 618 'Surface air equivalent potential temperature', 'K', (/ ('', i=1, 6) /)) 619 TYPE(ctrl_out), SAVE :: o_tke = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 620 'tke ', 'TKE', 'm2/s2', (/ ('', i=1, 6) /)) 621 TYPE(ctrl_out), SAVE :: o_tke_max = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 622 'tke_max', 'TKE max', 'm2/s2', & 623 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)' /)) 609 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'v10_ter', "", "", (/ ('', i=1, 9) /)), & 610 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'v10_lic', "", "", (/ ('', i=1, 9) /)), & 611 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'v10_oce', "", "", (/ ('', i=1, 9) /)), & 612 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'v10_sic', "", "", (/ ('', i=1, 9) /)) /) 613 614 TYPE(ctrl_out), SAVE :: o_cldtau = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 615 'cldtau', 'Cloud optical thickness', '1', (/ ('', i=1, 9) /)) 616 TYPE(ctrl_out), SAVE :: o_cldemi = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 617 'cldemi', 'Cloud optical emissivity', '1', (/ ('', i=1, 9) /)) 618 TYPE(ctrl_out), SAVE :: o_rh2m = ctrl_out((/ 5, 5, 10, 10, 10, 10, 11, 11, 11 /), & 619 'rh2m', 'Relative humidity at 2m', '%', (/ ('', i=1, 9) /)) 620 TYPE(ctrl_out), SAVE :: o_rh2m_min = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 621 'rh2m_min', 'Min Relative humidity at 2m', '%', & 622 (/ 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)' /)) 623 TYPE(ctrl_out), SAVE :: o_rh2m_max = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 624 'rh2m_max', 'Max Relative humidity at 2m', '%', & 625 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', & 626 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)' /)) 627 TYPE(ctrl_out), SAVE :: o_qsat2m = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 628 'qsat2m', 'Saturant humidity at 2m', '%', (/ ('', i=1, 9) /)) 629 TYPE(ctrl_out), SAVE :: o_tpot = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 630 'tpot', 'Surface air potential temperature', 'K', (/ ('', i=1, 9) /)) 631 TYPE(ctrl_out), SAVE :: o_tpote = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 632 'tpote', & 633 'Surface air equivalent potential temperature', 'K', (/ ('', i=1, 9) /)) 634 TYPE(ctrl_out), SAVE :: o_tke = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 635 'tke ', 'TKE', 'm2/s2', (/ ('', i=1, 9) /)) 636 TYPE(ctrl_out), SAVE :: o_tke_max = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 637 'tke_max', 'TKE max', 'm2/s2', & 638 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', & 639 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)' /)) 624 640 625 641 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_tke_srf = (/ & 626 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_ter', & 627 "Max Turb. Kinetic Energy "//clnsurf(1),"-", (/ ('', i=1, 6) /)), & 628 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_lic', & 629 "Max Turb. Kinetic Energy "//clnsurf(2),"-", (/ ('', i=1, 6) /)), & 630 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_oce', & 631 "Max Turb. Kinetic Energy "//clnsurf(3),"-", (/ ('', i=1, 6) /)), & 632 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_sic', & 633 "Max Turb. Kinetic Energy "//clnsurf(4),"-", (/ ('', i=1, 6) /)) /) 634 635 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_tke_max_srf = (/ & 636 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_max_ter', & 637 "Max Turb. Kinetic Energy "//clnsurf(1),"-", & 638 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)), & 639 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_max_lic', & 640 "Max Turb. Kinetic Energy "//clnsurf(2),"-", & 641 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)), & 642 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_max_oce', & 643 "Max Turb. Kinetic Energy "//clnsurf(3),"-", & 644 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)), & 645 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_max_sic', & 646 "Max Turb. Kinetic Energy "//clnsurf(4),"-", & 647 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) /) 648 649 TYPE(ctrl_out), SAVE :: o_kz = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 650 'kz', 'Kz melange', 'm2/s', (/ ('', i=1, 6) /)) 651 TYPE(ctrl_out), SAVE :: o_kz_max = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 652 'kz_max', 'Kz melange max', 'm2/s', & 653 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)' /)) 654 TYPE(ctrl_out), SAVE :: o_SWnetOR = ctrl_out((/ 10, 10, 2, 10, 10, 10 /), & 655 'SWnetOR', 'Sfce net SW radiation OR', 'W/m2', (/ ('', i=1, 6) /)) 656 TYPE(ctrl_out), SAVE :: o_SWdownOR = ctrl_out((/ 10, 10, 2, 10, 10, 10 /), & 657 'SWdownOR', 'Sfce incident SW radiation OR', 'W/m2', (/ ('', i=1, 6) /)) 658 TYPE(ctrl_out), SAVE :: o_LWdownOR = ctrl_out((/ 10, 10, 2, 10, 10, 10 /), & 659 'LWdownOR', 'Sfce incident LW radiation OR', 'W/m2', (/ ('', i=1, 6) /)) 660 TYPE(ctrl_out), SAVE :: o_snowl = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), & 661 'snowl', 'Solid Large-scale Precip.', 'kg/(m2*s)', (/ ('', i=1, 6) /)) 662 TYPE(ctrl_out), SAVE :: o_cape_max = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), & 663 'cape_max', 'CAPE max.', 'J/kg', & 664 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) 665 TYPE(ctrl_out), SAVE :: o_solldown = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), & 666 'solldown', 'Down. IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /)) 667 TYPE(ctrl_out), SAVE :: o_dtsvdfo = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), & 668 'dtsvdfo', 'Boundary-layer dTs(o)', 'K/s', (/ ('', i=1, 6) /)) 669 TYPE(ctrl_out), SAVE :: o_dtsvdft = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), & 670 'dtsvdft', 'Boundary-layer dTs(t)', 'K/s', (/ ('', i=1, 6) /)) 671 TYPE(ctrl_out), SAVE :: o_dtsvdfg = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), & 672 'dtsvdfg', 'Boundary-layer dTs(g)', 'K/s', (/ ('', i=1, 6) /)) 673 TYPE(ctrl_out), SAVE :: o_dtsvdfi = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), & 674 'dtsvdfi', 'Boundary-layer dTs(g)', 'K/s', (/ ('', i=1, 6) /)) 675 TYPE(ctrl_out), SAVE :: o_rugs = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), & 676 'rugs', 'rugosity', '-', (/ ('', i=1, 6) /)) 677 TYPE(ctrl_out), SAVE :: o_topswad = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), & 678 'topswad', 'ADE at TOA', 'W/m2', (/ ('', i=1, 6) /)) 679 TYPE(ctrl_out), SAVE :: o_topswad0 = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), & 680 'topswad0', 'ADE clear-sky at TOA', 'W/m2', (/ ('', i=1, 6) /)) 681 TYPE(ctrl_out), SAVE :: o_topswai = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), & 682 'topswai', 'AIE at TOA', 'W/m2', (/ ('', i=1, 6) /)) 683 TYPE(ctrl_out), SAVE :: o_solswad = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), & 684 'solswad', 'ADE at SRF', 'W/m2', (/ ('', i=1, 6) /)) 685 TYPE(ctrl_out), SAVE :: o_solswad0 = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), & 686 'solswad0', 'ADE clear-sky at SRF', 'W/m2', (/ ('', i=1, 6) /)) 687 TYPE(ctrl_out), SAVE :: o_solswai = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), & 688 'solswai', 'AIE at SFR', 'W/m2', (/ ('', i=1, 6) /)) 689 690 ! type(ctrl_out),save,dimension(10) :: o_tausumaero = (/ ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASBCM', & 691 ! (/ ('', i=1, 6) /)), & 642 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_ter', & 643 "Max Turb. Kinetic Energy "//clnsurf(1),"-", (/ ('', i=1, 9) /)), & 644 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_lic', & 645 "Max Turb. Kinetic Energy "//clnsurf(2),"-", (/ ('', i=1, 9) /)), & 646 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_oce', & 647 "Max Turb. Kinetic Energy "//clnsurf(3),"-", (/ ('', i=1, 9) /)), & 648 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_sic', & 649 "Max Turb. Kinetic Energy "//clnsurf(4),"-", (/ ('', i=1, 9) /)) /) 650 651 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_tke_max_srf = (/ & 652 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_max_ter', & 653 "Max Turb. Kinetic Energy "//clnsurf(1),"-", & 654 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 655 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)), & 656 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_max_lic', & 657 "Max Turb. Kinetic Energy "//clnsurf(2),"-", & 658 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 659 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)), & 660 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_max_oce', & 661 "Max Turb. Kinetic Energy "//clnsurf(3),"-", & 662 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 663 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)), & 664 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_max_sic', & 665 "Max Turb. Kinetic Energy "//clnsurf(4),"-", & 666 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 667 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) /) 668 669 TYPE(ctrl_out), SAVE :: o_kz = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 670 'kz', 'Kz melange', 'm2/s', (/ ('', i=1, 9) /)) 671 TYPE(ctrl_out), SAVE :: o_kz_max = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 672 'kz_max', 'Kz melange max', 'm2/s', & 673 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', & 674 't_max(X)', "t_max(X)", "t_max(X)", "t_max(X)" /)) 675 TYPE(ctrl_out), SAVE :: o_SWnetOR = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 676 'SWnetOR', 'Sfce net SW radiation OR', 'W/m2', (/ ('', i=1, 9) /)) 677 TYPE(ctrl_out), SAVE :: o_SWdownOR = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 678 'SWdownOR', 'Sfce incident SW radiation OR', 'W/m2', (/ ('', i=1, 9) /)) 679 TYPE(ctrl_out), SAVE :: o_LWdownOR = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 680 'LWdownOR', 'Sfce incident LW radiation OR', 'W/m2', (/ ('', i=1, 9) /)) 681 TYPE(ctrl_out), SAVE :: o_snowl = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 682 'snowl', 'Solid Large-scale Precip.', 'kg/(m2*s)', (/ ('', i=1, 9) /)) 683 TYPE(ctrl_out), SAVE :: o_cape_max = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 684 'cape_max', 'CAPE max.', 'J/kg', & 685 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 686 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) 687 TYPE(ctrl_out), SAVE :: o_solldown = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 688 'solldown', 'Down. IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 689 TYPE(ctrl_out), SAVE :: o_dtsvdfo = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 690 'dtsvdfo', 'Boundary-layer dTs(o)', 'K/s', (/ ('', i=1, 9) /)) 691 TYPE(ctrl_out), SAVE :: o_dtsvdft = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 692 'dtsvdft', 'Boundary-layer dTs(t)', 'K/s', (/ ('', i=1, 9) /)) 693 TYPE(ctrl_out), SAVE :: o_dtsvdfg = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 694 'dtsvdfg', 'Boundary-layer dTs(g)', 'K/s', (/ ('', i=1, 9) /)) 695 TYPE(ctrl_out), SAVE :: o_dtsvdfi = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 696 'dtsvdfi', 'Boundary-layer dTs(g)', 'K/s', (/ ('', i=1, 9) /)) 697 TYPE(ctrl_out), SAVE :: o_rugs = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 698 'rugs', 'rugosity', '-', (/ ('', i=1, 9) /)) 699 TYPE(ctrl_out), SAVE :: o_topswad = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 700 'topswad', 'ADE at TOA', 'W/m2', (/ ('', i=1, 9) /)) 701 TYPE(ctrl_out), SAVE :: o_topswad0 = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 702 'topswad0', 'ADE clear-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 703 TYPE(ctrl_out), SAVE :: o_topswai = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 704 'topswai', 'AIE at TOA', 'W/m2', (/ ('', i=1, 9) /)) 705 TYPE(ctrl_out), SAVE :: o_solswad = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 706 'solswad', 'ADE at SRF', 'W/m2', (/ ('', i=1, 9) /)) 707 TYPE(ctrl_out), SAVE :: o_solswad0 = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 708 'solswad0', 'ADE clear-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 709 TYPE(ctrl_out), SAVE :: o_solswai = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 710 'solswai', 'AIE at SFR', 'W/m2', (/ ('', i=1, 9) /)) 711 712 ! type(ctrl_out),save,dimension(10) :: o_tausumaero = (/ ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASBCM', & 713 ! (/ ('', i=1, 9) /)), & 692 714 type(ctrl_out),save,dimension(11) :: o_tausumaero = & 693 (/ ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASBCM', &694 "Aerosol Optical depth at 550 nm "//name_aero(1),"1", (/ ('', i=1, 6) /)), &695 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASPOMM', &696 "Aerosol Optical depth at 550 nm "//name_aero(2),"1", (/ ('', i=1, 6) /)), &697 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASSO4M', &698 "Aerosol Optical depth at 550 nm "//name_aero(3),"1", (/ ('', i=1, 6) /)), &699 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_CSSO4M', &700 "Aerosol Optical depth at 550 nm "//name_aero(4),"1", (/ ('', i=1, 6) /)), &701 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_SSSSM', &702 "Aerosol Optical depth at 550 nm "//name_aero(5),"1", (/ ('', i=1, 6) /)), &703 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASSSM', &704 "Aerosol Optical depth at 550 nm "//name_aero(6),"1", (/ ('', i=1, 6) /)), &705 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_CSSSM', &706 "Aerosol Optical depth at 550 nm "//name_aero(7),"1", (/ ('', i=1, 6) /)), &707 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_CIDUSTM', &708 "Aerosol Optical depth at 550 nm "//name_aero(8),"1", (/ ('', i=1, 6) /)), &709 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_AIBCM', &710 "Aerosol Optical depth at 550 nm "//name_aero(9),"1", (/ ('', i=1, 6) /)), &711 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_AIPOMM', &712 "Aerosol Optical depth at 550 nm "//name_aero(10),"1", (/ ('', i=1, 6) /)),&713 ctrl_out((/ 2, 2, 10, 10, 10, 10 /),'OD550_STRAT', &714 "Aerosol Optical depth at 550 nm "//name_aero(11),"1", (/ ('', i=1, 6) /)) /)715 TYPE(ctrl_out), SAVE :: o_od550aer = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &716 'od550aer', 'Total aerosol optical depth at 550nm', '-', (/ ('', i=1, 6) /))717 TYPE(ctrl_out), SAVE :: o_od865aer = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &718 'od865aer', 'Total aerosol optical depth at 870nm', '-', (/ ('', i=1, 6) /))719 TYPE(ctrl_out), SAVE :: o_absvisaer = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &720 'absvisaer', 'Absorption aerosol visible optical depth', '-', (/ ('', i=1, 6) /))721 TYPE(ctrl_out), SAVE :: o_od550lt1aer = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &722 'od550lt1aer', 'Fine mode optical depth', '-', (/ ('', i=1, 6) /))723 TYPE(ctrl_out), SAVE :: o_sconcso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &724 'sconcso4', 'Surface Concentration of Sulfate ', 'kg/m3', (/ ('', i=1, 6) /))725 TYPE(ctrl_out), SAVE :: o_sconcoa = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &726 'sconcoa', 'Surface Concentration of Organic Aerosol ', 'kg/m3', (/ ('', i=1, 6) /))727 TYPE(ctrl_out), SAVE :: o_sconcbc = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &728 'sconcbc', 'Surface Concentration of Black Carbon ', 'kg/m3', (/ ('', i=1, 6) /))729 TYPE(ctrl_out), SAVE :: o_sconcss = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &730 'sconcss', 'Surface Concentration of Sea Salt ', 'kg/m3', (/ ('', i=1, 6) /))731 TYPE(ctrl_out), SAVE :: o_sconcdust = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &732 'sconcdust', 'Surface Concentration of Dust ', 'kg/m3', (/ ('', i=1, 6) /))733 TYPE(ctrl_out), SAVE :: o_concso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &734 'concso4', 'Concentration of Sulfate ', 'kg/m3', (/ ('', i=1, 6) /))735 TYPE(ctrl_out), SAVE :: o_concoa = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &736 'concoa', 'Concentration of Organic Aerosol ', 'kg/m3', (/ ('', i=1, 6) /))737 TYPE(ctrl_out), SAVE :: o_concbc = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &738 'concbc', 'Concentration of Black Carbon ', 'kg/m3', (/ ('', i=1, 6) /))739 TYPE(ctrl_out), SAVE :: o_concss = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &740 'concss', 'Concentration of Sea Salt ', 'kg/m3', (/ ('', i=1, 6) /))741 TYPE(ctrl_out), SAVE :: o_concdust = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &742 'concdust', 'Concentration of Dust ', 'kg/m3', (/ ('', i=1, 6) /))743 TYPE(ctrl_out), SAVE :: o_loadso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &744 'loadso4', 'Column Load of Sulfate ', 'kg/m2', (/ ('', i=1, 6) /))745 TYPE(ctrl_out), SAVE :: o_loadoa = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &746 'loadoa', 'Column Load of Organic Aerosol ', 'kg/m2', (/ ('', i=1, 6) /))747 TYPE(ctrl_out), SAVE :: o_loadbc = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &748 'loadbc', 'Column Load of Black Carbon ', 'kg/m2', (/ ('', i=1, 6) /))749 TYPE(ctrl_out), SAVE :: o_loadss = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &750 'loadss', 'Column Load of Sea Salt ', 'kg/m2', (/ ('', i=1, 6) /))751 TYPE(ctrl_out), SAVE :: o_loaddust = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &752 'loaddust', 'Column Load of Dust ', 'kg/m2', (/ ('', i=1, 6) /))753 TYPE(ctrl_out), SAVE :: o_swtoaas_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &754 'swtoaas_nat', 'Natural aerosol radiative forcing all-sky at TOA', 'W/m2', (/ ('', i=1, 6) /))755 TYPE(ctrl_out), SAVE :: o_swsrfas_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &756 'swsrfas_nat', 'Natural aerosol radiative forcing all-sky at SRF', 'W/m2', (/ ('', i=1, 6) /))757 TYPE(ctrl_out), SAVE :: o_swtoacs_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &758 'swtoacs_nat', 'Natural aerosol radiative forcing clear-sky at TOA', 'W/m2', (/ ('', i=1, 6) /))759 TYPE(ctrl_out), SAVE :: o_swsrfcs_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &760 'swsrfcs_nat', 'Natural aerosol radiative forcing clear-sky at SRF', 'W/m2', (/ ('', i=1, 6) /))761 TYPE(ctrl_out), SAVE :: o_swtoaas_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &762 'swtoaas_ant', 'Anthropogenic aerosol radiative forcing all-sky at TOA', 'W/m2', (/ ('', i=1, 6) /))763 TYPE(ctrl_out), SAVE :: o_swsrfas_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &764 'swsrfas_ant', 'Anthropogenic aerosol radiative forcing all-sky at SRF', 'W/m2', (/ ('', i=1, 6) /))765 TYPE(ctrl_out), SAVE :: o_swtoacs_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &766 'swtoacs_ant', 'Anthropogenic aerosol radiative forcing clear-sky at TOA', 'W/m2', (/ ('', i=1, 6) /))767 TYPE(ctrl_out), SAVE :: o_swsrfcs_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &768 'swsrfcs_ant', 'Anthropogenic aerosol radiative forcing clear-sky at SRF', 'W/m2', (/ ('', i=1, 6) /))769 TYPE(ctrl_out), SAVE :: o_swtoacf_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &770 'swtoacf_nat', 'Natural aerosol impact on cloud radiative forcing at TOA', 'W/m2', (/ ('', i=1, 6) /))771 TYPE(ctrl_out), SAVE :: o_swsrfcf_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &772 'swsrfcf_nat', 'Natural aerosol impact on cloud radiative forcing at SRF', 'W/m2', (/ ('', i=1, 6) /))773 TYPE(ctrl_out), SAVE :: o_swtoacf_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &774 'swtoacf_ant', 'Anthropogenic aerosol impact on cloud radiative forcing at TOA', 'W/m2', (/ ('', i=1, 6) /))775 TYPE(ctrl_out), SAVE :: o_swsrfcf_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &776 'swsrfcf_ant', 'Anthropogenic aerosol impact on cloud radiative forcing at SRF', 'W/m2', (/ ('', i=1, 6) /))777 TYPE(ctrl_out), SAVE :: o_swtoacf_zero = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &778 'swtoacf_zero', 'Cloud radiative forcing (allsky-clearsky fluxes) at TOA', 'W/m2', (/ ('', i=1, 6) /))779 TYPE(ctrl_out), SAVE :: o_swsrfcf_zero = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &780 'swsrfcf_zero', 'Cloud radiative forcing (allsky-clearsky fluxes) at SRF', 'W/m2', (/ ('', i=1, 6) /))781 TYPE(ctrl_out), SAVE :: o_cldncl = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &782 'cldncl', 'CDNC at top of liquid water cloud', 'm-3', (/ ('', i=1, 6) /))783 TYPE(ctrl_out), SAVE :: o_reffclwtop = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &784 'reffclwtop', 'Droplet effective radius at top of liquid water cloud', 'm', (/ ('', i=1, 6) /))785 TYPE(ctrl_out), SAVE :: o_cldnvi = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &786 'cldnvi', 'Column Integrated Cloud Droplet Number', 'm-2', (/ ('', i=1, 6) /))787 TYPE(ctrl_out), SAVE :: o_lcc = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &788 'lcc', 'Cloud liquid fraction at top of cloud', '1', (/ ('', i=1, 6) /))715 (/ ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASBCM', & 716 "Aerosol Optical depth at 550 nm "//name_aero(1),"1", (/ ('', i=1, 9) /)), & 717 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASPOMM', & 718 "Aerosol Optical depth at 550 nm "//name_aero(2),"1", (/ ('', i=1, 9) /)), & 719 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASSO4M', & 720 "Aerosol Optical depth at 550 nm "//name_aero(3),"1", (/ ('', i=1, 9) /)), & 721 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_CSSO4M', & 722 "Aerosol Optical depth at 550 nm "//name_aero(4),"1", (/ ('', i=1, 9) /)), & 723 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_SSSSM', & 724 "Aerosol Optical depth at 550 nm "//name_aero(5),"1", (/ ('', i=1, 9) /)), & 725 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASSSM', & 726 "Aerosol Optical depth at 550 nm "//name_aero(6),"1", (/ ('', i=1, 9) /)), & 727 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_CSSSM', & 728 "Aerosol Optical depth at 550 nm "//name_aero(7),"1", (/ ('', i=1, 9) /)), & 729 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_CIDUSTM', & 730 "Aerosol Optical depth at 550 nm "//name_aero(8),"1", (/ ('', i=1, 9) /)), & 731 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_AIBCM', & 732 "Aerosol Optical depth at 550 nm "//name_aero(9),"1", (/ ('', i=1, 9) /)), & 733 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_AIPOMM', & 734 "Aerosol Optical depth at 550 nm "//name_aero(10),"1", (/ ('', i=1, 9) /)),& 735 ctrl_out((/ 2, 2, 10, 10, 10, 10, 11, 11, 11 /),'OD550_STRAT', & 736 "Aerosol Optical depth at 550 nm "//name_aero(11),"1", (/ ('', i=1, 9) /)) /) 737 TYPE(ctrl_out), SAVE :: o_od550aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 738 'od550aer', 'Total aerosol optical depth at 550nm', '-', (/ ('', i=1, 9) /)) 739 TYPE(ctrl_out), SAVE :: o_od865aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 740 'od865aer', 'Total aerosol optical depth at 870nm', '-', (/ ('', i=1, 9) /)) 741 TYPE(ctrl_out), SAVE :: o_absvisaer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 742 'absvisaer', 'Absorption aerosol visible optical depth', '-', (/ ('', i=1, 9) /)) 743 TYPE(ctrl_out), SAVE :: o_od550lt1aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 744 'od550lt1aer', 'Fine mode optical depth', '-', (/ ('', i=1, 9) /)) 745 TYPE(ctrl_out), SAVE :: o_sconcso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 746 'sconcso4', 'Surface Concentration of Sulfate ', 'kg/m3', (/ ('', i=1, 9) /)) 747 TYPE(ctrl_out), SAVE :: o_sconcoa = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 748 'sconcoa', 'Surface Concentration of Organic Aerosol ', 'kg/m3', (/ ('', i=1, 9) /)) 749 TYPE(ctrl_out), SAVE :: o_sconcbc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 750 'sconcbc', 'Surface Concentration of Black Carbon ', 'kg/m3', (/ ('', i=1, 9) /)) 751 TYPE(ctrl_out), SAVE :: o_sconcss = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 752 'sconcss', 'Surface Concentration of Sea Salt ', 'kg/m3', (/ ('', i=1, 9) /)) 753 TYPE(ctrl_out), SAVE :: o_sconcdust = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 754 'sconcdust', 'Surface Concentration of Dust ', 'kg/m3', (/ ('', i=1, 9) /)) 755 TYPE(ctrl_out), SAVE :: o_concso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 756 'concso4', 'Concentration of Sulfate ', 'kg/m3', (/ ('', i=1, 9) /)) 757 TYPE(ctrl_out), SAVE :: o_concoa = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 758 'concoa', 'Concentration of Organic Aerosol ', 'kg/m3', (/ ('', i=1, 9) /)) 759 TYPE(ctrl_out), SAVE :: o_concbc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 760 'concbc', 'Concentration of Black Carbon ', 'kg/m3', (/ ('', i=1, 9) /)) 761 TYPE(ctrl_out), SAVE :: o_concss = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 762 'concss', 'Concentration of Sea Salt ', 'kg/m3', (/ ('', i=1, 9) /)) 763 TYPE(ctrl_out), SAVE :: o_concdust = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 764 'concdust', 'Concentration of Dust ', 'kg/m3', (/ ('', i=1, 9) /)) 765 TYPE(ctrl_out), SAVE :: o_loadso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 766 'loadso4', 'Column Load of Sulfate ', 'kg/m2', (/ ('', i=1, 9) /)) 767 TYPE(ctrl_out), SAVE :: o_loadoa = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 768 'loadoa', 'Column Load of Organic Aerosol ', 'kg/m2', (/ ('', i=1, 9) /)) 769 TYPE(ctrl_out), SAVE :: o_loadbc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 770 'loadbc', 'Column Load of Black Carbon ', 'kg/m2', (/ ('', i=1, 9) /)) 771 TYPE(ctrl_out), SAVE :: o_loadss = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 772 'loadss', 'Column Load of Sea Salt ', 'kg/m2', (/ ('', i=1, 9) /)) 773 TYPE(ctrl_out), SAVE :: o_loaddust = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 774 'loaddust', 'Column Load of Dust ', 'kg/m2', (/ ('', i=1, 9) /)) 775 TYPE(ctrl_out), SAVE :: o_swtoaas_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 776 'swtoaas_nat', 'Natural aerosol radiative forcing all-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 777 TYPE(ctrl_out), SAVE :: o_swsrfas_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 778 'swsrfas_nat', 'Natural aerosol radiative forcing all-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 779 TYPE(ctrl_out), SAVE :: o_swtoacs_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 780 'swtoacs_nat', 'Natural aerosol radiative forcing clear-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 781 TYPE(ctrl_out), SAVE :: o_swsrfcs_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 782 'swsrfcs_nat', 'Natural aerosol radiative forcing clear-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 783 TYPE(ctrl_out), SAVE :: o_swtoaas_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 784 'swtoaas_ant', 'Anthropogenic aerosol radiative forcing all-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 785 TYPE(ctrl_out), SAVE :: o_swsrfas_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 786 'swsrfas_ant', 'Anthropogenic aerosol radiative forcing all-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 787 TYPE(ctrl_out), SAVE :: o_swtoacs_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 788 'swtoacs_ant', 'Anthropogenic aerosol radiative forcing clear-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 789 TYPE(ctrl_out), SAVE :: o_swsrfcs_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 790 'swsrfcs_ant', 'Anthropogenic aerosol radiative forcing clear-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 791 TYPE(ctrl_out), SAVE :: o_swtoacf_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 792 'swtoacf_nat', 'Natural aerosol impact on cloud radiative forcing at TOA', 'W/m2', (/ ('', i=1, 9) /)) 793 TYPE(ctrl_out), SAVE :: o_swsrfcf_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 794 'swsrfcf_nat', 'Natural aerosol impact on cloud radiative forcing at SRF', 'W/m2', (/ ('', i=1, 9) /)) 795 TYPE(ctrl_out), SAVE :: o_swtoacf_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 796 'swtoacf_ant', 'Anthropogenic aerosol impact on cloud radiative forcing at TOA', 'W/m2', (/ ('', i=1, 9) /)) 797 TYPE(ctrl_out), SAVE :: o_swsrfcf_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 798 'swsrfcf_ant', 'Anthropogenic aerosol impact on cloud radiative forcing at SRF', 'W/m2', (/ ('', i=1, 9) /)) 799 TYPE(ctrl_out), SAVE :: o_swtoacf_zero = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 800 'swtoacf_zero', 'Cloud radiative forcing (allsky-clearsky fluxes) at TOA', 'W/m2', (/ ('', i=1, 9) /)) 801 TYPE(ctrl_out), SAVE :: o_swsrfcf_zero = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 802 'swsrfcf_zero', 'Cloud radiative forcing (allsky-clearsky fluxes) at SRF', 'W/m2', (/ ('', i=1, 9) /)) 803 TYPE(ctrl_out), SAVE :: o_cldncl = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 804 'cldncl', 'CDNC at top of liquid water cloud', 'm-3', (/ ('', i=1, 9) /)) 805 TYPE(ctrl_out), SAVE :: o_reffclwtop = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 806 'reffclwtop', 'Droplet effective radius at top of liquid water cloud', 'm', (/ ('', i=1, 9) /)) 807 TYPE(ctrl_out), SAVE :: o_cldnvi = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 808 'cldnvi', 'Column Integrated Cloud Droplet Number', 'm-2', (/ ('', i=1, 9) /)) 809 TYPE(ctrl_out), SAVE :: o_lcc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 810 'lcc', 'Cloud liquid fraction at top of cloud', '1', (/ ('', i=1, 9) /)) 789 811 790 812 791 813 !!!!!!!!!!!!!!!!!!!!!! 3D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 792 TYPE(ctrl_out), SAVE :: o_ec550aer = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &793 'ec550aer', 'Extinction at 550nm', 'm^-1', (/ ('', i=1, 6) /))794 TYPE(ctrl_out), SAVE :: o_lwcon = ctrl_out((/ 2, 5, 10, 10, 10, 10 /), &795 'lwcon', 'Cloud liquid water content', 'kg/kg', (/ ('', i=1, 6) /))796 TYPE(ctrl_out), SAVE :: o_iwcon = ctrl_out((/ 2, 5, 10, 10, 10, 10 /), &797 'iwcon', 'Cloud ice water content', 'kg/kg', (/ ('', i=1, 6) /))798 TYPE(ctrl_out), SAVE :: o_temp = ctrl_out((/ 2, 3, 4, 10, 10, 10 /), &799 'temp', 'Air temperature', 'K', (/ ('', i=1, 6) /))800 TYPE(ctrl_out), SAVE :: o_theta = ctrl_out((/ 2, 3, 4, 10, 10, 10 /), &801 'theta', 'Potential air temperature', 'K', (/ ('', i=1, 6) /))802 TYPE(ctrl_out), SAVE :: o_ovap = ctrl_out((/ 2, 3, 4, 10, 10, 10 /), &803 'ovap', 'Specific humidity', 'kg/kg', (/ ('', i=1, 6) /))804 TYPE(ctrl_out), SAVE :: o_ovapinit = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &805 'ovapinit', 'Specific humidity (begin of timestep)', 'kg/kg', (/ ('', i=1, 6) /))806 TYPE(ctrl_out), SAVE :: o_oliq = ctrl_out((/ 2, 3, 4, 10, 10, 10 /), &807 'oliq', 'Condensed water', 'kg/kg', (/ ('', i=1, 6) /))808 TYPE(ctrl_out), SAVE :: o_wvapp = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &809 'wvapp', '', '', (/ ('', i=1, 6) /))810 TYPE(ctrl_out), SAVE :: o_geop = ctrl_out((/ 2, 3, 10, 10, 10, 10 /), &811 'geop', 'Geopotential height', 'm2/s2', (/ ('', i=1, 6) /))812 TYPE(ctrl_out), SAVE :: o_vitu = ctrl_out((/ 2, 3, 4, 6, 10, 10 /), &813 'vitu', 'Zonal wind', 'm/s', (/ ('', i=1, 6) /))814 TYPE(ctrl_out), SAVE :: o_vitv = ctrl_out((/ 2, 3, 4, 6, 10, 10 /), &815 'vitv', 'Meridional wind', 'm/s', (/ ('', i=1, 6) /))816 TYPE(ctrl_out), SAVE :: o_vitw = ctrl_out((/ 2, 3, 10, 6, 10, 10 /), &817 'vitw', 'Vertical wind', 'Pa/s', (/ ('', i=1, 6) /))818 TYPE(ctrl_out), SAVE :: o_pres = ctrl_out((/ 2, 3, 10, 10, 10, 10 /), &819 'pres', 'Air pressure', 'Pa', (/ ('', i=1, 6) /))820 TYPE(ctrl_out), SAVE :: o_paprs = ctrl_out((/ 2, 3, 10, 10, 10, 10 /), &821 'paprs', 'Air pressure Inter-Couches', 'Pa', (/ ('', i=1, 6) /))822 TYPE(ctrl_out), SAVE :: o_mass = ctrl_out((/ 2, 3, 10, 10, 10, 10 /), &823 'mass', 'Masse Couches', 'kg/m2', (/ ('', i=1, 6) /))824 TYPE(ctrl_out), SAVE :: o_zfull = ctrl_out((/ 2, 3, 10, 10, 10, 10 /), &825 'zfull', 'Altitude of full pressure levels', 'm', (/ ('', i=1, 6) /))826 TYPE(ctrl_out), SAVE :: o_zhalf = ctrl_out((/ 2, 3, 10, 10, 10, 10 /), &827 'zhalf', 'Altitude of half pressure levels', 'm', (/ ('', i=1, 6) /))828 TYPE(ctrl_out), SAVE :: o_rneb = ctrl_out((/ 2, 5, 10, 10, 10, 10 /), &829 'rneb', 'Cloud fraction', '-', (/ ('', i=1, 6) /))830 TYPE(ctrl_out), SAVE :: o_rnebcon = ctrl_out((/ 2, 5, 10, 10, 10, 10 /), &831 'rnebcon', 'Convective Cloud Fraction', '-', (/ ('', i=1, 6) /))832 TYPE(ctrl_out), SAVE :: o_rnebls = ctrl_out((/ 2, 5, 10, 10, 10, 10 /), &833 'rnebls', 'LS Cloud fraction', '-', (/ ('', i=1, 6) /))834 TYPE(ctrl_out), SAVE :: o_rhum = ctrl_out((/ 2, 5, 10, 10, 10, 10 /), &835 'rhum', 'Relative humidity', '-', (/ ('', i=1, 6) /))836 TYPE(ctrl_out), SAVE :: o_ozone = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &837 'ozone', 'Ozone mole fraction', '-', (/ ('', i=1, 6) /))838 TYPE(ctrl_out), SAVE :: o_ozone_light = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &839 'ozone_daylight', 'Daylight ozone mole fraction', '-', (/ ('', i=1, 6) /))840 TYPE(ctrl_out), SAVE :: o_upwd = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &841 'upwd', 'saturated updraft', 'kg/m2/s', (/ ('', i=1, 6) /))842 TYPE(ctrl_out), SAVE :: o_dtphy = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &843 'dtphy', 'Physics dT', 'K/s', (/ ('', i=1, 6) /))844 TYPE(ctrl_out), SAVE :: o_dqphy = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &845 'dqphy', 'Physics dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))846 TYPE(ctrl_out), SAVE :: o_pr_con_l = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &847 'pr_con_l', 'Convective precipitation lic', ' ', (/ ('', i=1, 6) /))848 TYPE(ctrl_out), SAVE :: o_pr_con_i = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &849 'pr_con_i', 'Convective precipitation ice', ' ', (/ ('', i=1, 6) /))850 TYPE(ctrl_out), SAVE :: o_pr_lsc_l = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &851 'pr_lsc_l', 'Large scale precipitation lic', ' ', (/ ('', i=1, 6) /))852 TYPE(ctrl_out), SAVE :: o_pr_lsc_i = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &853 'pr_lsc_i', 'Large scale precipitation ice', ' ', (/ ('', i=1, 6) /))854 TYPE(ctrl_out), SAVE :: o_re = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), &855 're', 'Cloud droplet effective radius', 'um', (/ ('', i=1, 6) /))856 TYPE(ctrl_out), SAVE :: o_fl = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), &857 'fl', 'Denominator of Cloud droplet effective radius', ' ', (/ ('', i=1, 6) /))858 TYPE(ctrl_out), SAVE :: o_scdnc = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &859 'scdnc', 'Cloud droplet number concentration', 'm-3', (/ ('', i=1, 6) /))860 TYPE(ctrl_out), SAVE :: o_reffclws = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &861 'reffclws', 'Stratiform Cloud Droplet Effective Radius (aerosol diags.)', 'm', (/ ('', i=1, 6) /))862 TYPE(ctrl_out), SAVE :: o_reffclwc = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &863 'reffclwc', 'Convective Cloud Droplet Effective Radius (aerosol diags.)', 'm', (/ ('', i=1, 6) /))864 TYPE(ctrl_out), SAVE :: o_lcc3d = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &865 'lcc3d', 'Cloud liquid fraction', '1', (/ ('', i=1, 6) /))866 TYPE(ctrl_out), SAVE :: o_lcc3dcon = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &867 'lcc3dcon', 'Convective cloud liquid fraction', '1', (/ ('', i=1, 6) /))868 TYPE(ctrl_out), SAVE :: o_lcc3dstra = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &869 'lcc3dstra', 'Stratiform cloud liquid fraction', '1', (/ ('', i=1, 6) /))814 TYPE(ctrl_out), SAVE :: o_ec550aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 815 'ec550aer', 'Extinction at 550nm', 'm^-1', (/ ('', i=1, 9) /)) 816 TYPE(ctrl_out), SAVE :: o_lwcon = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 817 'lwcon', 'Cloud liquid water content', 'kg/kg', (/ ('', i=1, 9) /)) 818 TYPE(ctrl_out), SAVE :: o_iwcon = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 819 'iwcon', 'Cloud ice water content', 'kg/kg', (/ ('', i=1, 9) /)) 820 TYPE(ctrl_out), SAVE :: o_temp = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11 /), & 821 'temp', 'Air temperature', 'K', (/ ('', i=1, 9) /)) 822 TYPE(ctrl_out), SAVE :: o_theta = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11 /), & 823 'theta', 'Potential air temperature', 'K', (/ ('', i=1, 9) /)) 824 TYPE(ctrl_out), SAVE :: o_ovap = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11 /), & 825 'ovap', 'Specific humidity', 'kg/kg', (/ ('', i=1, 9) /)) 826 TYPE(ctrl_out), SAVE :: o_ovapinit = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 827 'ovapinit', 'Specific humidity (begin of timestep)', 'kg/kg', (/ ('', i=1, 9) /)) 828 TYPE(ctrl_out), SAVE :: o_oliq = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11 /), & 829 'oliq', 'Condensed water', 'kg/kg', (/ ('', i=1, 9) /)) 830 TYPE(ctrl_out), SAVE :: o_wvapp = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 831 'wvapp', '', '', (/ ('', i=1, 9) /)) 832 TYPE(ctrl_out), SAVE :: o_geop = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 833 'geop', 'Geopotential height', 'm2/s2', (/ ('', i=1, 9) /)) 834 TYPE(ctrl_out), SAVE :: o_vitu = ctrl_out((/ 2, 3, 4, 6, 10, 10, 11, 11, 11 /), & 835 'vitu', 'Zonal wind', 'm/s', (/ ('', i=1, 9) /)) 836 TYPE(ctrl_out), SAVE :: o_vitv = ctrl_out((/ 2, 3, 4, 6, 10, 10, 11, 11, 11 /), & 837 'vitv', 'Meridional wind', 'm/s', (/ ('', i=1, 9) /)) 838 TYPE(ctrl_out), SAVE :: o_vitw = ctrl_out((/ 2, 3, 10, 6, 10, 10, 11, 11, 11 /), & 839 'vitw', 'Vertical wind', 'Pa/s', (/ ('', i=1, 9) /)) 840 TYPE(ctrl_out), SAVE :: o_pres = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 841 'pres', 'Air pressure', 'Pa', (/ ('', i=1, 9) /)) 842 TYPE(ctrl_out), SAVE :: o_paprs = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 843 'paprs', 'Air pressure Inter-Couches', 'Pa', (/ ('', i=1, 9) /)) 844 TYPE(ctrl_out), SAVE :: o_mass = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 845 'mass', 'Masse Couches', 'kg/m2', (/ ('', i=1, 9) /)) 846 TYPE(ctrl_out), SAVE :: o_zfull = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 847 'zfull', 'Altitude of full pressure levels', 'm', (/ ('', i=1, 9) /)) 848 TYPE(ctrl_out), SAVE :: o_zhalf = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 849 'zhalf', 'Altitude of half pressure levels', 'm', (/ ('', i=1, 9) /)) 850 TYPE(ctrl_out), SAVE :: o_rneb = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 851 'rneb', 'Cloud fraction', '-', (/ ('', i=1, 9) /)) 852 TYPE(ctrl_out), SAVE :: o_rnebcon = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 853 'rnebcon', 'Convective Cloud Fraction', '-', (/ ('', i=1, 9) /)) 854 TYPE(ctrl_out), SAVE :: o_rnebls = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 855 'rnebls', 'LS Cloud fraction', '-', (/ ('', i=1, 9) /)) 856 TYPE(ctrl_out), SAVE :: o_rhum = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 857 'rhum', 'Relative humidity', '-', (/ ('', i=1, 9) /)) 858 TYPE(ctrl_out), SAVE :: o_ozone = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 859 'ozone', 'Ozone mole fraction', '-', (/ ('', i=1, 9) /)) 860 TYPE(ctrl_out), SAVE :: o_ozone_light = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 861 'ozone_daylight', 'Daylight ozone mole fraction', '-', (/ ('', i=1, 9) /)) 862 TYPE(ctrl_out), SAVE :: o_upwd = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 863 'upwd', 'saturated updraft', 'kg/m2/s', (/ ('', i=1, 9) /)) 864 TYPE(ctrl_out), SAVE :: o_dtphy = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 865 'dtphy', 'Physics dT', 'K/s', (/ ('', i=1, 9) /)) 866 TYPE(ctrl_out), SAVE :: o_dqphy = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 867 'dqphy', 'Physics dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 868 TYPE(ctrl_out), SAVE :: o_pr_con_l = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 869 'pr_con_l', 'Convective precipitation lic', ' ', (/ ('', i=1, 9) /)) 870 TYPE(ctrl_out), SAVE :: o_pr_con_i = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 871 'pr_con_i', 'Convective precipitation ice', ' ', (/ ('', i=1, 9) /)) 872 TYPE(ctrl_out), SAVE :: o_pr_lsc_l = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 873 'pr_lsc_l', 'Large scale precipitation lic', ' ', (/ ('', i=1, 9) /)) 874 TYPE(ctrl_out), SAVE :: o_pr_lsc_i = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 875 'pr_lsc_i', 'Large scale precipitation ice', ' ', (/ ('', i=1, 9) /)) 876 TYPE(ctrl_out), SAVE :: o_re = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 877 're', 'Cloud droplet effective radius', 'um', (/ ('', i=1, 9) /)) 878 TYPE(ctrl_out), SAVE :: o_fl = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 879 'fl', 'Denominator of Cloud droplet effective radius', ' ', (/ ('', i=1, 9) /)) 880 TYPE(ctrl_out), SAVE :: o_scdnc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 881 'scdnc', 'Cloud droplet number concentration', 'm-3', (/ ('', i=1, 9) /)) 882 TYPE(ctrl_out), SAVE :: o_reffclws = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 883 'reffclws', 'Stratiform Cloud Droplet Effective Radius (aerosol diags.)', 'm', (/ ('', i=1, 9) /)) 884 TYPE(ctrl_out), SAVE :: o_reffclwc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 885 'reffclwc', 'Convective Cloud Droplet Effective Radius (aerosol diags.)', 'm', (/ ('', i=1, 9) /)) 886 TYPE(ctrl_out), SAVE :: o_lcc3d = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 887 'lcc3d', 'Cloud liquid fraction', '1', (/ ('', i=1, 9) /)) 888 TYPE(ctrl_out), SAVE :: o_lcc3dcon = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 889 'lcc3dcon', 'Convective cloud liquid fraction', '1', (/ ('', i=1, 9) /)) 890 TYPE(ctrl_out), SAVE :: o_lcc3dstra = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 891 'lcc3dstra', 'Stratiform cloud liquid fraction', '1', (/ ('', i=1, 9) /)) 870 892 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 871 893 872 894 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_albe_srf = (/ & 873 ctrl_out((/ 3, 7, 10, 7, 10, 10 /),'albe_ter', "Albedo VIS surf. "//clnsurf(1),"-", (/ ('', i=1, 6) /)), &874 ctrl_out((/ 3, 7, 10, 7, 10, 10 /),'albe_lic', "Albedo VIS surf. "//clnsurf(2),"-", (/ ('', i=1, 6) /)), &875 ctrl_out((/ 3, 7, 10, 7, 10, 10 /),'albe_oce', "Albedo VIS surf. "//clnsurf(3),"-", (/ ('', i=1, 6) /)), &876 ctrl_out((/ 3, 7, 10, 7, 10, 10 /),'albe_sic', "Albedo VIS surf. "//clnsurf(4),"-", (/ ('', i=1, 6) /)) /)895 ctrl_out((/ 3, 7, 10, 7, 10, 10, 11, 11, 11 /),'albe_ter', "Albedo VIS surf. "//clnsurf(1),"-", (/ ('', i=1, 9) /)), & 896 ctrl_out((/ 3, 7, 10, 7, 10, 10, 11, 11, 11 /),'albe_lic', "Albedo VIS surf. "//clnsurf(2),"-", (/ ('', i=1, 9) /)), & 897 ctrl_out((/ 3, 7, 10, 7, 10, 10, 11, 11, 11 /),'albe_oce', "Albedo VIS surf. "//clnsurf(3),"-", (/ ('', i=1, 9) /)), & 898 ctrl_out((/ 3, 7, 10, 7, 10, 10, 11, 11, 11 /),'albe_sic', "Albedo VIS surf. "//clnsurf(4),"-", (/ ('', i=1, 9) /)) /) 877 899 878 900 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_ages_srf = (/ & 879 ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'ages_ter', "Snow age", "day", (/ ('', i=1, 6) /)), &880 ctrl_out((/ 3, 10, 10, 10, 10, 10 /),'ages_lic', "Snow age", "day", (/ ('', i=1, 6) /)), &881 ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'ages_oce',"Snow age", "day", (/ ('', i=1, 6) /)), &882 ctrl_out((/ 3, 10, 10, 10, 10, 10 /),'ages_sic',"Snow age", "day", (/ ('', i=1, 6) /)) /)901 ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /),'ages_ter', "Snow age", "day", (/ ('', i=1, 9) /)), & 902 ctrl_out((/ 3, 10, 10, 10, 10, 10, 11, 11, 11 /),'ages_lic', "Snow age", "day", (/ ('', i=1, 9) /)), & 903 ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /),'ages_oce',"Snow age", "day", (/ ('', i=1, 9) /)), & 904 ctrl_out((/ 3, 10, 10, 10, 10, 10, 11, 11, 11 /),'ages_sic',"Snow age", "day", (/ ('', i=1, 9) /)) /) 883 905 884 906 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_rugs_srf = (/ & 885 ctrl_out((/ 3, 6, 10, 10, 10, 10 /),'rugs_ter', "Surface roughness "//clnsurf(1),"m", (/ ('', i=1, 6) /)), &886 ctrl_out((/ 3, 6, 10, 10, 10, 10 /),'rugs_lic', "Surface roughness "//clnsurf(2),"m", (/ ('', i=1, 6) /)), &887 ctrl_out((/ 3, 6, 10, 10, 10, 10 /),'rugs_oce', "Surface roughness "//clnsurf(3),"m", (/ ('', i=1, 6) /)), &888 ctrl_out((/ 3, 6, 10, 10, 10, 10 /),'rugs_sic', "Surface roughness "//clnsurf(4),"m", (/ ('', i=1, 6) /)) /)889 890 TYPE(ctrl_out), SAVE :: o_alb1 = ctrl_out((/ 3, 10, 10, 10, 10, 10 /), &891 'alb1', 'Surface VIS albedo', '-', (/ ('', i=1, 6) /))892 TYPE(ctrl_out), SAVE :: o_alb2 = ctrl_out((/ 3, 10, 10, 10, 10, 10 /), &893 'alb2', 'Surface Near IR albedo', '-', (/ ('', i=1, 6) /))894 TYPE(ctrl_out), SAVE :: o_clwcon = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &895 'clwcon', 'Convective Cloud Liquid water content', 'kg/kg', (/ ('', i=1, 6) /))896 TYPE(ctrl_out), SAVE :: o_Ma = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &897 'Ma', 'undilute adiab updraft', 'kg/m2/s', (/ ('', i=1, 6) /))898 TYPE(ctrl_out), SAVE :: o_dnwd = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &899 'dnwd', 'saturated downdraft', 'kg/m2/s', (/ ('', i=1, 6) /))900 TYPE(ctrl_out), SAVE :: o_dnwd0 = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &901 'dnwd0', 'unsat. downdraft', 'kg/m2/s', (/ ('', i=1, 6) /))902 TYPE(ctrl_out), SAVE :: o_mc = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &903 'mc', 'Convective mass flux', 'kg/m2/s', (/ ('', i=1, 6) /))904 TYPE(ctrl_out), SAVE :: o_ftime_con = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &905 906 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /))907 TYPE(ctrl_out), SAVE :: o_dtdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &908 'dtdyn', 'Dynamics dT', 'K/s', (/ ('', i=1, 6) /))909 TYPE(ctrl_out), SAVE :: o_dqdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &910 'dqdyn', 'Dynamics dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))911 TYPE(ctrl_out), SAVE :: o_dudyn = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &912 'dudyn', 'Dynamics dU', 'm/s2', (/ ('', i=1, 6) /))913 TYPE(ctrl_out), SAVE :: o_dvdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &914 'dvdyn', 'Dynamics dV', 'm/s2', (/ ('', i=1, 6) /))915 TYPE(ctrl_out), SAVE :: o_dtcon = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &916 'dtcon', 'Convection dT', 'K/s', (/ ('', i=1, 6) /))917 TYPE(ctrl_out), SAVE :: o_ducon = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &918 'ducon', 'Convection du', 'm/s2', (/ ('', i=1, 6) /))919 TYPE(ctrl_out), SAVE :: o_dvcon = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &920 'dvcon', 'Convection dv', 'm/s2', (/ ('', i=1, 6) /))921 TYPE(ctrl_out), SAVE :: o_dqcon = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &922 'dqcon', 'Convection dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))923 TYPE(ctrl_out), SAVE :: o_dtwak = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &924 'dtwak', 'Wake dT', 'K/s', (/ ('', i=1, 6) /))925 TYPE(ctrl_out), SAVE :: o_dqwak = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &926 'dqwak', 'Wake dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))927 TYPE(ctrl_out), SAVE :: o_wake_h = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &928 'wake_h', 'wake_h', '-', (/ ('', i=1, 6) /))929 TYPE(ctrl_out), SAVE :: o_wake_s = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &930 'wake_s', 'wake_s', '-', (/ ('', i=1, 6) /))931 TYPE(ctrl_out), SAVE :: o_wake_deltat = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &932 'wake_deltat', 'wake_deltat', ' ', (/ ('', i=1, 6) /))933 TYPE(ctrl_out), SAVE :: o_wake_deltaq = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &934 'wake_deltaq', 'wake_deltaq', ' ', (/ ('', i=1, 6) /))935 TYPE(ctrl_out), SAVE :: o_wake_omg = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &936 'wake_omg', 'wake_omg', ' ', (/ ('', i=1, 6) /))937 TYPE(ctrl_out), SAVE :: o_wdtrainA = ctrl_out((/ 4, 1, 10, 4, 1, 10 /), &938 'wdtrainA', 'precipitation from AA', '-', (/ ('', i=1, 6) /))939 TYPE(ctrl_out), SAVE :: o_wdtrainM = ctrl_out((/ 4, 1, 10, 4, 1, 10 /), &940 'wdtrainM', 'precipitation from mixture', '-', (/ ('', i=1, 6) /))941 TYPE(ctrl_out), SAVE :: o_Vprecip = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &942 'Vprecip', 'precipitation vertical profile', '-', (/ ('', i=1, 6) /))943 TYPE(ctrl_out), SAVE :: o_ftd = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &944 'ftd', 'tend temp due aux descentes precip', '-', (/ ('', i=1, 6) /))945 TYPE(ctrl_out), SAVE :: o_fqd = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &946 'fqd', 'tend vap eau due aux descentes precip', '-', (/ ('', i=1, 6) /))947 TYPE(ctrl_out), SAVE :: o_dtlsc = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &948 'dtlsc', 'Condensation dT', 'K/s', (/ ('', i=1, 6) /))949 TYPE(ctrl_out), SAVE :: o_dtlschr = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &950 'dtlschr', 'Large-scale condensational heating rate', 'K/s', (/ ('', i=1, 6) /))951 TYPE(ctrl_out), SAVE :: o_dqlsc = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &952 'dqlsc', 'Condensation dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))953 TYPE(ctrl_out), SAVE :: o_beta_prec = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &954 'beta_prec', 'LS Conversion rate to prec', '(kg/kg)/s', (/ ('', i=1, 6) /))955 TYPE(ctrl_out), SAVE :: o_dtvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &956 'dtvdf', 'Boundary-layer dT', 'K/s', (/ ('', i=1, 6) /))957 TYPE(ctrl_out), SAVE :: o_dtdis = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &958 'dtdis', 'TKE dissipation dT', 'K/s', (/ ('', i=1, 6) /))959 TYPE(ctrl_out), SAVE :: o_dqvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &960 'dqvdf', 'Boundary-layer dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))961 TYPE(ctrl_out), SAVE :: o_dteva = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &962 'dteva', 'Reevaporation dT', 'K/s', (/ ('', i=1, 6) /))963 TYPE(ctrl_out), SAVE :: o_dqeva = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &964 'dqeva', 'Reevaporation dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))907 ctrl_out((/ 3, 6, 10, 10, 10, 10, 11, 11, 11 /),'rugs_ter', "Surface roughness "//clnsurf(1),"m", (/ ('', i=1, 9) /)), & 908 ctrl_out((/ 3, 6, 10, 10, 10, 10, 11, 11, 11 /),'rugs_lic', "Surface roughness "//clnsurf(2),"m", (/ ('', i=1, 9) /)), & 909 ctrl_out((/ 3, 6, 10, 10, 10, 10, 11, 11, 11 /),'rugs_oce', "Surface roughness "//clnsurf(3),"m", (/ ('', i=1, 9) /)), & 910 ctrl_out((/ 3, 6, 10, 10, 10, 10, 11, 11, 11 /),'rugs_sic', "Surface roughness "//clnsurf(4),"m", (/ ('', i=1, 9) /)) /) 911 912 TYPE(ctrl_out), SAVE :: o_alb1 = ctrl_out((/ 3, 10, 10, 10, 10, 10, 11, 11, 11 /), & 913 'alb1', 'Surface VIS albedo', '-', (/ ('', i=1, 9) /)) 914 TYPE(ctrl_out), SAVE :: o_alb2 = ctrl_out((/ 3, 10, 10, 10, 10, 10, 11, 11, 11 /), & 915 'alb2', 'Surface Near IR albedo', '-', (/ ('', i=1, 9) /)) 916 TYPE(ctrl_out), SAVE :: o_clwcon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 917 'clwcon', 'Convective Cloud Liquid water content', 'kg/kg', (/ ('', i=1, 9) /)) 918 TYPE(ctrl_out), SAVE :: o_Ma = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 919 'Ma', 'undilute adiab updraft', 'kg/m2/s', (/ ('', i=1, 9) /)) 920 TYPE(ctrl_out), SAVE :: o_dnwd = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 921 'dnwd', 'saturated downdraft', 'kg/m2/s', (/ ('', i=1, 9) /)) 922 TYPE(ctrl_out), SAVE :: o_dnwd0 = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 923 'dnwd0', 'unsat. downdraft', 'kg/m2/s', (/ ('', i=1, 9) /)) 924 TYPE(ctrl_out), SAVE :: o_mc = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 925 'mc', 'Convective mass flux', 'kg/m2/s', (/ ('', i=1, 9) /)) 926 TYPE(ctrl_out), SAVE :: o_ftime_con = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 927 'ftime_con', 'Fraction of time convection Occurs', ' ', & 928 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) 929 TYPE(ctrl_out), SAVE :: o_dtdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 930 'dtdyn', 'Dynamics dT', 'K/s', (/ ('', i=1, 9) /)) 931 TYPE(ctrl_out), SAVE :: o_dqdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 932 'dqdyn', 'Dynamics dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 933 TYPE(ctrl_out), SAVE :: o_dudyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 934 'dudyn', 'Dynamics dU', 'm/s2', (/ ('', i=1, 9) /)) 935 TYPE(ctrl_out), SAVE :: o_dvdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 936 'dvdyn', 'Dynamics dV', 'm/s2', (/ ('', i=1, 9) /)) 937 TYPE(ctrl_out), SAVE :: o_dtcon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 938 'dtcon', 'Convection dT', 'K/s', (/ ('', i=1, 9) /)) 939 TYPE(ctrl_out), SAVE :: o_ducon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 940 'ducon', 'Convection du', 'm/s2', (/ ('', i=1, 9) /)) 941 TYPE(ctrl_out), SAVE :: o_dvcon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 942 'dvcon', 'Convection dv', 'm/s2', (/ ('', i=1, 9) /)) 943 TYPE(ctrl_out), SAVE :: o_dqcon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 944 'dqcon', 'Convection dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 945 TYPE(ctrl_out), SAVE :: o_dtwak = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 946 'dtwak', 'Wake dT', 'K/s', (/ ('', i=1, 9) /)) 947 TYPE(ctrl_out), SAVE :: o_dqwak = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 948 'dqwak', 'Wake dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 949 TYPE(ctrl_out), SAVE :: o_wake_h = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 950 'wake_h', 'wake_h', '-', (/ ('', i=1, 9) /)) 951 TYPE(ctrl_out), SAVE :: o_wake_s = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 952 'wake_s', 'wake_s', '-', (/ ('', i=1, 9) /)) 953 TYPE(ctrl_out), SAVE :: o_wake_deltat = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 954 'wake_deltat', 'wake_deltat', ' ', (/ ('', i=1, 9) /)) 955 TYPE(ctrl_out), SAVE :: o_wake_deltaq = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 956 'wake_deltaq', 'wake_deltaq', ' ', (/ ('', i=1, 9) /)) 957 TYPE(ctrl_out), SAVE :: o_wake_omg = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 958 'wake_omg', 'wake_omg', ' ', (/ ('', i=1, 9) /)) 959 TYPE(ctrl_out), SAVE :: o_wdtrainA = ctrl_out((/ 4, 1, 10, 4, 1, 10, 11, 11, 110 /), & 960 'wdtrainA', 'precipitation from AA', '-', (/ ('', i=1, 9) /)) 961 TYPE(ctrl_out), SAVE :: o_wdtrainM = ctrl_out((/ 4, 1, 10, 4, 1, 10, 11, 11, 110 /), & 962 'wdtrainM', 'precipitation from mixture', '-', (/ ('', i=1, 9) /)) 963 TYPE(ctrl_out), SAVE :: o_Vprecip = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 964 'Vprecip', 'precipitation vertical profile', '-', (/ ('', i=1, 9) /)) 965 TYPE(ctrl_out), SAVE :: o_ftd = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 966 'ftd', 'tend temp due aux descentes precip', '-', (/ ('', i=1, 9) /)) 967 TYPE(ctrl_out), SAVE :: o_fqd = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 968 'fqd', 'tend vap eau due aux descentes precip', '-', (/ ('', i=1, 9) /)) 969 TYPE(ctrl_out), SAVE :: o_dtlsc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 970 'dtlsc', 'Condensation dT', 'K/s', (/ ('', i=1, 9) /)) 971 TYPE(ctrl_out), SAVE :: o_dtlschr = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 972 'dtlschr', 'Large-scale condensational heating rate', 'K/s', (/ ('', i=1, 9) /)) 973 TYPE(ctrl_out), SAVE :: o_dqlsc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 974 'dqlsc', 'Condensation dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 975 TYPE(ctrl_out), SAVE :: o_beta_prec = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 976 'beta_prec', 'LS Conversion rate to prec', '(kg/kg)/s', (/ ('', i=1, 9) /)) 977 TYPE(ctrl_out), SAVE :: o_dtvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 978 'dtvdf', 'Boundary-layer dT', 'K/s', (/ ('', i=1, 9) /)) 979 TYPE(ctrl_out), SAVE :: o_dtdis = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 980 'dtdis', 'TKE dissipation dT', 'K/s', (/ ('', i=1, 9) /)) 981 TYPE(ctrl_out), SAVE :: o_dqvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 982 'dqvdf', 'Boundary-layer dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 983 TYPE(ctrl_out), SAVE :: o_dteva = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 984 'dteva', 'Reevaporation dT', 'K/s', (/ ('', i=1, 9) /)) 985 TYPE(ctrl_out), SAVE :: o_dqeva = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 986 'dqeva', 'Reevaporation dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 965 987 966 988 !!!!!!!!!!!!!!!! Specifique thermiques 967 TYPE(ctrl_out), SAVE :: o_dqlscth = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &968 'dqlscth', 'dQ therm.', '(kg/kg)/s', (/ ('', i=1, 6) /))969 TYPE(ctrl_out), SAVE :: o_dqlscst = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &970 'dqlscst', 'dQ strat.', '(kg/kg)/s', (/ ('', i=1, 6) /))971 TYPE(ctrl_out), SAVE :: o_dtlscth = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &972 'dtlscth', 'dQ therm.', 'K/s', (/ ('', i=1, 6) /))973 TYPE(ctrl_out), SAVE :: o_dtlscst = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &974 'dtlscst', 'dQ strat.', 'K/s', (/ ('', i=1, 6) /))975 TYPE(ctrl_out), SAVE :: o_plulth = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &976 'plulth', 'Rainfall therm.', 'K/s', (/ ('', i=1, 6) /))977 TYPE(ctrl_out), SAVE :: o_plulst = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &978 'plulst', 'Rainfall strat.', 'K/s', (/ ('', i=1, 6) /))979 TYPE(ctrl_out), SAVE :: o_lmaxth = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &980 'lmaxth', "Upper level thermals", "", (/ ('', i=1, 6) /))981 TYPE(ctrl_out), SAVE :: o_ptconvth = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &982 'ptconvth', 'POINTS CONVECTIFS therm.', ' ', (/ ('', i=1, 6) /))989 TYPE(ctrl_out), SAVE :: o_dqlscth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 990 'dqlscth', 'dQ therm.', '(kg/kg)/s', (/ ('', i=1, 9) /)) 991 TYPE(ctrl_out), SAVE :: o_dqlscst = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 992 'dqlscst', 'dQ strat.', '(kg/kg)/s', (/ ('', i=1, 9) /)) 993 TYPE(ctrl_out), SAVE :: o_dtlscth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 994 'dtlscth', 'dQ therm.', 'K/s', (/ ('', i=1, 9) /)) 995 TYPE(ctrl_out), SAVE :: o_dtlscst = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 996 'dtlscst', 'dQ strat.', 'K/s', (/ ('', i=1, 9) /)) 997 TYPE(ctrl_out), SAVE :: o_plulth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 998 'plulth', 'Rainfall therm.', 'K/s', (/ ('', i=1, 9) /)) 999 TYPE(ctrl_out), SAVE :: o_plulst = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1000 'plulst', 'Rainfall strat.', 'K/s', (/ ('', i=1, 9) /)) 1001 TYPE(ctrl_out), SAVE :: o_lmaxth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1002 'lmaxth', "Upper level thermals", "", (/ ('', i=1, 9) /)) 1003 TYPE(ctrl_out), SAVE :: o_ptconvth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1004 'ptconvth', 'POINTS CONVECTIFS therm.', ' ', (/ ('', i=1, 9) /)) 983 1005 !!!!!!!!!!!!!!!!!!!!!!!! 984 TYPE(ctrl_out), SAVE :: o_ptconv = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &985 'ptconv', 'POINTS CONVECTIFS', ' ', (/ ('', i=1, 6) /))986 TYPE(ctrl_out), SAVE :: o_ratqs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &987 'ratqs', 'RATQS', ' ', (/ ('', i=1, 6) /))988 TYPE(ctrl_out), SAVE :: o_dtthe = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &989 'dtthe', 'Thermal dT', 'K/s', (/ ('', i=1, 6) /))990 TYPE(ctrl_out), SAVE :: o_f_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &991 'f_th', 'Thermal plume mass flux', 'kg/(m2*s)', (/ ('', i=1, 6) /))992 TYPE(ctrl_out), SAVE :: o_e_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &993 'e_th', 'Thermal plume entrainment', 'K/s', (/ ('', i=1, 6) /))994 TYPE(ctrl_out), SAVE :: o_w_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &995 'w_th', 'Thermal plume vertical velocity', 'm/s', (/ ('', i=1, 6) /))996 TYPE(ctrl_out), SAVE :: o_lambda_th = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &997 'lambda_th', 'Thermal plume vertical velocity', 'm/s', (/ ('', i=1, 6) /))998 TYPE(ctrl_out), SAVE :: o_ftime_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &999 'ftime_th', 'Fraction of time Shallow convection occurs', ' ', (/ ('', i=1, 6) /))1000 TYPE(ctrl_out), SAVE :: o_q_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1001 'q_th', 'Thermal plume total humidity', 'kg/kg', (/ ('', i=1, 6) /))1002 TYPE(ctrl_out), SAVE :: o_a_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1003 'a_th', "Thermal plume fraction", "", (/ ('', i=1, 6) /))1004 TYPE(ctrl_out), SAVE :: o_d_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1005 'd_th', 'Thermal plume detrainment', 'K/s', (/ ('', i=1, 6) /))1006 TYPE(ctrl_out), SAVE :: o_f0_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1007 'f0_th', 'Thermal closure mass flux', 'K/s', (/ ('', i=1, 6) /))1008 TYPE(ctrl_out), SAVE :: o_zmax_th = ctrl_out((/ 4, 4, 4, 5, 10, 10 /), &1009 'zmax_th', 'Thermal plume height', 'K/s', (/ ('', i=1, 6) /))1010 TYPE(ctrl_out), SAVE :: o_dqthe = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1011 'dqthe', 'Thermal dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))1012 TYPE(ctrl_out), SAVE :: o_dtajs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1013 'dtajs', 'Dry adjust. dT', 'K/s', (/ ('', i=1, 6) /))1014 TYPE(ctrl_out), SAVE :: o_dqajs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1015 'dqajs', 'Dry adjust. dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))1016 TYPE(ctrl_out), SAVE :: o_dtswr = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1017 'dtswr', 'SW radiation dT', 'K/s', (/ ('', i=1, 6) /))1018 TYPE(ctrl_out), SAVE :: o_dtsw0 = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1019 'dtsw0', 'CS SW radiation dT', 'K/s', (/ ('', i=1, 6) /))1020 TYPE(ctrl_out), SAVE :: o_dtlwr = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1021 'dtlwr', 'LW radiation dT', 'K/s', (/ ('', i=1, 6) /))1022 TYPE(ctrl_out), SAVE :: o_dtlw0 = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1023 'dtlw0', 'CS LW radiation dT', 'K/s', (/ ('', i=1, 6) /))1024 TYPE(ctrl_out), SAVE :: o_dtec = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1025 'dtec', 'Cinetic dissip dT', 'K/s', (/ ('', i=1, 6) /))1026 TYPE(ctrl_out), SAVE :: o_duvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1027 'duvdf', 'Boundary-layer dU', 'm/s2', (/ ('', i=1, 6) /))1028 TYPE(ctrl_out), SAVE :: o_dvvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1029 'dvvdf', 'Boundary-layer dV', 'm/s2', (/ ('', i=1, 6) /))1030 TYPE(ctrl_out), SAVE :: o_duoro = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1031 'duoro', 'Orography dU', 'm/s2', (/ ('', i=1, 6) /))1032 TYPE(ctrl_out), SAVE :: o_dvoro = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1033 'dvoro', 'Orography dV', 'm/s2', (/ ('', i=1, 6) /))1034 TYPE(ctrl_out), SAVE :: o_dulif = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1035 'dulif', 'Orography dU', 'm/s2', (/ ('', i=1, 6) /))1036 TYPE(ctrl_out), SAVE :: o_dvlif = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1037 'dvlif', 'Orography dV', 'm/s2', (/ ('', i=1, 6) /))1038 TYPE(ctrl_out), SAVE :: o_duhin = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1039 'duhin', 'Hines GWD dU', 'm/s2', (/ ('', i=1, 6) /))1040 TYPE(ctrl_out), SAVE :: o_dvhin = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1041 'dvhin', 'Hines GWD dV', 'm/s2', (/ ('', i=1, 6) /))1042 TYPE(ctrl_out), SAVE :: o_dtoro = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1043 'dtoro', 'Orography dT', 'K/s', (/ ('', i=1, 6) /))1044 TYPE(ctrl_out), SAVE :: o_dtlif = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1045 'dtlif', 'Orography dT', 'K/s', (/ ('', i=1, 6) /))1046 TYPE(ctrl_out), SAVE :: o_dthin = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1047 'dthin', 'Hines GWD dT', 'K/s', (/ ('', i=1, 6) /))1006 TYPE(ctrl_out), SAVE :: o_ptconv = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1007 'ptconv', 'POINTS CONVECTIFS', ' ', (/ ('', i=1, 9) /)) 1008 TYPE(ctrl_out), SAVE :: o_ratqs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1009 'ratqs', 'RATQS', ' ', (/ ('', i=1, 9) /)) 1010 TYPE(ctrl_out), SAVE :: o_dtthe = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1011 'dtthe', 'Thermal dT', 'K/s', (/ ('', i=1, 9) /)) 1012 TYPE(ctrl_out), SAVE :: o_f_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1013 'f_th', 'Thermal plume mass flux', 'kg/(m2*s)', (/ ('', i=1, 9) /)) 1014 TYPE(ctrl_out), SAVE :: o_e_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1015 'e_th', 'Thermal plume entrainment', 'K/s', (/ ('', i=1, 9) /)) 1016 TYPE(ctrl_out), SAVE :: o_w_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1017 'w_th', 'Thermal plume vertical velocity', 'm/s', (/ ('', i=1, 9) /)) 1018 TYPE(ctrl_out), SAVE :: o_lambda_th = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1019 'lambda_th', 'Thermal plume vertical velocity', 'm/s', (/ ('', i=1, 9) /)) 1020 TYPE(ctrl_out), SAVE :: o_ftime_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1021 'ftime_th', 'Fraction of time Shallow convection occurs', ' ', (/ ('', i=1, 9) /)) 1022 TYPE(ctrl_out), SAVE :: o_q_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1023 'q_th', 'Thermal plume total humidity', 'kg/kg', (/ ('', i=1, 9) /)) 1024 TYPE(ctrl_out), SAVE :: o_a_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1025 'a_th', "Thermal plume fraction", "", (/ ('', i=1, 9) /)) 1026 TYPE(ctrl_out), SAVE :: o_d_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1027 'd_th', 'Thermal plume detrainment', 'K/s', (/ ('', i=1, 9) /)) 1028 TYPE(ctrl_out), SAVE :: o_f0_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1029 'f0_th', 'Thermal closure mass flux', 'K/s', (/ ('', i=1, 9) /)) 1030 TYPE(ctrl_out), SAVE :: o_zmax_th = ctrl_out((/ 4, 4, 4, 5, 10, 10, 11, 11, 11 /), & 1031 'zmax_th', 'Thermal plume height', 'K/s', (/ ('', i=1, 9) /)) 1032 TYPE(ctrl_out), SAVE :: o_dqthe = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1033 'dqthe', 'Thermal dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 1034 TYPE(ctrl_out), SAVE :: o_dtajs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1035 'dtajs', 'Dry adjust. dT', 'K/s', (/ ('', i=1, 9) /)) 1036 TYPE(ctrl_out), SAVE :: o_dqajs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1037 'dqajs', 'Dry adjust. dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 1038 TYPE(ctrl_out), SAVE :: o_dtswr = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1039 'dtswr', 'SW radiation dT', 'K/s', (/ ('', i=1, 9) /)) 1040 TYPE(ctrl_out), SAVE :: o_dtsw0 = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1041 'dtsw0', 'CS SW radiation dT', 'K/s', (/ ('', i=1, 9) /)) 1042 TYPE(ctrl_out), SAVE :: o_dtlwr = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1043 'dtlwr', 'LW radiation dT', 'K/s', (/ ('', i=1, 9) /)) 1044 TYPE(ctrl_out), SAVE :: o_dtlw0 = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1045 'dtlw0', 'CS LW radiation dT', 'K/s', (/ ('', i=1, 9) /)) 1046 TYPE(ctrl_out), SAVE :: o_dtec = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1047 'dtec', 'Cinetic dissip dT', 'K/s', (/ ('', i=1, 9) /)) 1048 TYPE(ctrl_out), SAVE :: o_duvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1049 'duvdf', 'Boundary-layer dU', 'm/s2', (/ ('', i=1, 9) /)) 1050 TYPE(ctrl_out), SAVE :: o_dvvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1051 'dvvdf', 'Boundary-layer dV', 'm/s2', (/ ('', i=1, 9) /)) 1052 TYPE(ctrl_out), SAVE :: o_duoro = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1053 'duoro', 'Orography dU', 'm/s2', (/ ('', i=1, 9) /)) 1054 TYPE(ctrl_out), SAVE :: o_dvoro = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1055 'dvoro', 'Orography dV', 'm/s2', (/ ('', i=1, 9) /)) 1056 TYPE(ctrl_out), SAVE :: o_dulif = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1057 'dulif', 'Orography dU', 'm/s2', (/ ('', i=1, 9) /)) 1058 TYPE(ctrl_out), SAVE :: o_dvlif = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1059 'dvlif', 'Orography dV', 'm/s2', (/ ('', i=1, 9) /)) 1060 TYPE(ctrl_out), SAVE :: o_duhin = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1061 'duhin', 'Hines GWD dU', 'm/s2', (/ ('', i=1, 9) /)) 1062 TYPE(ctrl_out), SAVE :: o_dvhin = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1063 'dvhin', 'Hines GWD dV', 'm/s2', (/ ('', i=1, 9) /)) 1064 TYPE(ctrl_out), SAVE :: o_dtoro = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1065 'dtoro', 'Orography dT', 'K/s', (/ ('', i=1, 9) /)) 1066 TYPE(ctrl_out), SAVE :: o_dtlif = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1067 'dtlif', 'Orography dT', 'K/s', (/ ('', i=1, 9) /)) 1068 TYPE(ctrl_out), SAVE :: o_dthin = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1069 'dthin', 'Hines GWD dT', 'K/s', (/ ('', i=1, 9) /)) 1048 1070 1049 1071 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_trac(:) 1050 1072 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_trac_cum(:) 1051 TYPE(ctrl_out), SAVE :: o_rsu = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1052 'rsu', 'SW upward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1053 TYPE(ctrl_out), SAVE :: o_rsd = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1054 'rsd', 'SW downward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1055 TYPE(ctrl_out), SAVE :: o_rlu = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1056 'rlu', 'LW upward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1057 TYPE(ctrl_out), SAVE :: o_rld = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1058 'rld', 'LW downward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1059 TYPE(ctrl_out), SAVE :: o_rsucs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1060 'rsucs', 'SW CS upward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1061 TYPE(ctrl_out), SAVE :: o_rsdcs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1062 'rsdcs', 'SW CS downward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1063 TYPE(ctrl_out), SAVE :: o_rlucs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1064 'rlucs', 'LW CS upward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1065 TYPE(ctrl_out), SAVE :: o_rldcs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1066 'rldcs', 'LW CS downward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1067 TYPE(ctrl_out), SAVE :: o_tnt = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1068 'tnt', 'Tendency of air temperature', 'K s-1', (/ ('', i=1, 6) /)) 1069 TYPE(ctrl_out), SAVE :: o_tntc = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1070 'tntc', 'Tendency of air temperature due to Moist Convection', 'K s-1', (/ ('', i=1, 6) /)) 1071 TYPE(ctrl_out), SAVE :: o_tntr = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1072 'tntr', 'Air temperature tendency due to Radiative heating', 'K s-1', (/ ('', i=1, 6) /)) 1073 TYPE(ctrl_out), SAVE :: o_tntscpbl = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1074 'tntscpbl', 'Air temperature tendency due to St cloud and precipitation and BL mixing', & 1075 'K s-1', (/ ('', i=1, 6) /)) 1076 TYPE(ctrl_out), SAVE :: o_tnhus = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1077 'tnhus', 'Tendency of specific humidity', 's-1', (/ ('', i=1, 6) /)) 1078 TYPE(ctrl_out), SAVE :: o_tnhusc = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1079 'tnhusc', 'Tendency of specific humidity due to convection', 's-1', (/ ('', i=1, 6) /)) 1080 TYPE(ctrl_out), SAVE :: o_tnhusscpbl = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1081 'tnhusscpbl', 'Tendency of Specific humidity due to ST cl, precip and BL mixing', 's-1', (/ ('', i=1, 6) /)) 1082 TYPE(ctrl_out), SAVE :: o_evu = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1083 'evu', 'Eddy viscosity coefficient for Momentum Variables', 'm2 s-1', (/ ('', i=1, 6) /)) 1084 TYPE(ctrl_out), SAVE :: o_h2o = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1085 'h2o', 'Mass Fraction of Water', '1', (/ ('', i=1, 6) /)) 1086 TYPE(ctrl_out), SAVE :: o_mcd = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1087 'mcd', 'Downdraft COnvective Mass Flux', 'kg/(m2*s)', (/ ('', i=1, 6) /)) 1088 TYPE(ctrl_out), SAVE :: o_dmc = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1089 'dmc', 'Deep COnvective Mass Flux', 'kg/(m2*s)', (/ ('', i=1, 6) /)) 1090 TYPE(ctrl_out), SAVE :: o_ref_liq = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1091 'ref_liq', 'Effective radius of convective cloud liquid water particle', 'm', (/ ('', i=1, 6) /)) 1092 TYPE(ctrl_out), SAVE :: o_ref_ice = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1093 'ref_ice', 'Effective radius of startiform cloud ice particle', 'm', (/ ('', i=1, 6) /)) 1094 TYPE(ctrl_out), SAVE :: o_rsut4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1095 'rsut4co2', 'TOA Out SW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1096 TYPE(ctrl_out), SAVE :: o_rlut4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1097 'rlut4co2', 'TOA Out LW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1098 TYPE(ctrl_out), SAVE :: o_rsutcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1099 'rsutcs4co2', 'TOA Out CS SW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1100 TYPE(ctrl_out), SAVE :: o_rlutcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1101 'rlutcs4co2', 'TOA Out CS LW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1102 TYPE(ctrl_out), SAVE :: o_rsu4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1103 'rsu4co2', 'Upwelling SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1104 TYPE(ctrl_out), SAVE :: o_rlu4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1105 'rlu4co2', 'Upwelling LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1106 TYPE(ctrl_out), SAVE :: o_rsucs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1107 'rsucs4co2', 'Upwelling CS SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1108 TYPE(ctrl_out), SAVE :: o_rlucs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1109 'rlucs4co2', 'Upwelling CS LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1110 TYPE(ctrl_out), SAVE :: o_rsd4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1111 'rsd4co2', 'Downwelling SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1112 TYPE(ctrl_out), SAVE :: o_rld4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1113 'rld4co2', 'Downwelling LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1114 TYPE(ctrl_out), SAVE :: o_rsdcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1115 'rsdcs4co2', 'Downwelling CS SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1116 TYPE(ctrl_out), SAVE :: o_rldcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1117 'rldcs4co2', 'Downwelling CS LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1073 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_vdf(:) 1074 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_the(:) 1075 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_con(:) 1076 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_lessi_impa(:) 1077 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_lessi_nucl(:) 1078 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_insc(:) 1079 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_bcscav(:) 1080 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_evapls(:) 1081 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_ls(:) 1082 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_trsp(:) 1083 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_sscav(:) 1084 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_sat(:) 1085 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_uscav(:) 1086 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_dry(:) 1087 1088 TYPE(ctrl_out), SAVE :: o_rsu = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1089 'rsu', 'SW upward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1090 TYPE(ctrl_out), SAVE :: o_rsd = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1091 'rsd', 'SW downward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1092 TYPE(ctrl_out), SAVE :: o_rlu = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1093 'rlu', 'LW upward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1094 TYPE(ctrl_out), SAVE :: o_rld = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1095 'rld', 'LW downward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1096 TYPE(ctrl_out), SAVE :: o_rsucs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1097 'rsucs', 'SW CS upward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1098 TYPE(ctrl_out), SAVE :: o_rsdcs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1099 'rsdcs', 'SW CS downward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1100 TYPE(ctrl_out), SAVE :: o_rlucs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1101 'rlucs', 'LW CS upward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1102 TYPE(ctrl_out), SAVE :: o_rldcs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1103 'rldcs', 'LW CS downward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1104 TYPE(ctrl_out), SAVE :: o_tnt = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1105 'tnt', 'Tendency of air temperature', 'K s-1', (/ ('', i=1, 9) /)) 1106 TYPE(ctrl_out), SAVE :: o_tntc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1107 'tntc', 'Tendency of air temperature due to Moist Convection', 'K s-1', (/ ('', i=1, 9) /)) 1108 TYPE(ctrl_out), SAVE :: o_tntr = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1109 'tntr', 'Air temperature tendency due to Radiative heating', 'K s-1', (/ ('', i=1, 9) /)) 1110 TYPE(ctrl_out), SAVE :: o_tntscpbl = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1111 'tntscpbl', 'Air temperature tendency due to St cloud and precipitation and BL mixing', & 1112 'K s-1', (/ ('', i=1, 9) /)) 1113 TYPE(ctrl_out), SAVE :: o_tnhus = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1114 'tnhus', 'Tendency of specific humidity', 's-1', (/ ('', i=1, 9) /)) 1115 TYPE(ctrl_out), SAVE :: o_tnhusc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1116 'tnhusc', 'Tendency of specific humidity due to convection', 's-1', (/ ('', i=1, 9) /)) 1117 TYPE(ctrl_out), SAVE :: o_tnhusscpbl = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1118 'tnhusscpbl', 'Tendency of Specific humidity due to ST cl, precip and BL mixing', 's-1', (/ ('', i=1, 9) /)) 1119 TYPE(ctrl_out), SAVE :: o_evu = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1120 'evu', 'Eddy viscosity coefficient for Momentum Variables', 'm2 s-1', (/ ('', i=1, 9) /)) 1121 TYPE(ctrl_out), SAVE :: o_h2o = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1122 'h2o', 'Mass Fraction of Water', '1', (/ ('', i=1, 9) /)) 1123 TYPE(ctrl_out), SAVE :: o_mcd = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1124 'mcd', 'Downdraft COnvective Mass Flux', 'kg/(m2*s)', (/ ('', i=1, 9) /)) 1125 TYPE(ctrl_out), SAVE :: o_dmc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1126 'dmc', 'Deep COnvective Mass Flux', 'kg/(m2*s)', (/ ('', i=1, 9) /)) 1127 TYPE(ctrl_out), SAVE :: o_ref_liq = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1128 'ref_liq', 'Effective radius of convective cloud liquid water particle', 'm', (/ ('', i=1, 9) /)) 1129 TYPE(ctrl_out), SAVE :: o_ref_ice = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1130 'ref_ice', 'Effective radius of startiform cloud ice particle', 'm', (/ ('', i=1, 9) /)) 1131 TYPE(ctrl_out), SAVE :: o_rsut4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1132 'rsut4co2', 'TOA Out SW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1133 TYPE(ctrl_out), SAVE :: o_rlut4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1134 'rlut4co2', 'TOA Out LW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1135 TYPE(ctrl_out), SAVE :: o_rsutcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1136 'rsutcs4co2', 'TOA Out CS SW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1137 TYPE(ctrl_out), SAVE :: o_rlutcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1138 'rlutcs4co2', 'TOA Out CS LW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1139 TYPE(ctrl_out), SAVE :: o_rsu4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1140 'rsu4co2', 'Upwelling SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1141 TYPE(ctrl_out), SAVE :: o_rlu4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1142 'rlu4co2', 'Upwelling LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1143 TYPE(ctrl_out), SAVE :: o_rsucs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1144 'rsucs4co2', 'Upwelling CS SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1145 TYPE(ctrl_out), SAVE :: o_rlucs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1146 'rlucs4co2', 'Upwelling CS LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1147 TYPE(ctrl_out), SAVE :: o_rsd4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1148 'rsd4co2', 'Downwelling SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1149 TYPE(ctrl_out), SAVE :: o_rld4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1150 'rld4co2', 'Downwelling LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1151 TYPE(ctrl_out), SAVE :: o_rsdcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1152 'rsdcs4co2', 'Downwelling CS SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1153 TYPE(ctrl_out), SAVE :: o_rldcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1154 'rldcs4co2', 'Downwelling CS LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1155 1156 !!!!!!!!!!!!! Sorties niveaux standards de pression NMC 1157 TYPE(ctrl_out), SAVE :: o_tnondef = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1158 'tnondef', 'Undefined value of T', 'K', (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", & 1159 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1160 TYPE(ctrl_out), SAVE :: o_ta = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1161 'ta', 'Air temperature', 'K', (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", & 1162 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1163 TYPE(ctrl_out), SAVE :: o_zg = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1164 'zg', 'Geopotential height', 'm', (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", & 1165 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1166 TYPE(ctrl_out), SAVE :: o_hus = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1167 'hus', 'Specific humidity', '1', (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", & 1168 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1169 TYPE(ctrl_out), SAVE :: o_hur = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1170 'hur', 'Relative humidity', '%', (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", & 1171 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1172 TYPE(ctrl_out), SAVE :: o_ua = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1173 'ua', 'Eastward wind', 'm s-1', (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", & 1174 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1175 TYPE(ctrl_out), SAVE :: o_va = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1176 'va', 'Northward wind', 'm s-1', (/ ('', i=1, 9)/)) 1177 TYPE(ctrl_out), SAVE :: o_wap = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1178 'wap', 'Lagrangian tendency of air pressure', 'Pa s-1', (/ "inst(X)", "inst(X)", "inst(X)", & 1179 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1180 TYPE(ctrl_out), SAVE :: o_psbg = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1181 'psbg', 'Lagrangian tendency of air pressure', 'Pa s-1', (/ "inst(X)", "inst(X)", "inst(X)", & 1182 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1183 TYPE(ctrl_out), SAVE :: o_tro3 = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1184 'tro3', 'Ozone mole fraction', '1e-9', (/ "inst(X)", "inst(X)", "inst(X)", & 1185 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1186 TYPE(ctrl_out), SAVE :: o_tro3_daylight = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1187 'tro3_daylight', 'Daylight ozone mole fraction', '1e-9', (/ "inst(X)", "inst(X)", "inst(X)", & 1188 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1189 TYPE(ctrl_out), SAVE :: o_uxv = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1190 'uv', 'uv', 'm2/s2', (/ "inst(X)", "inst(X)", "inst(X)", & 1191 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1192 TYPE(ctrl_out), SAVE :: o_vxq = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1193 'vq', 'vq', 'm/s * (kg/kg)', (/ "inst(X)", "inst(X)", "inst(X)", & 1194 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1195 TYPE(ctrl_out), SAVE :: o_vxT = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1196 'vT', 'vT', 'mK/s', (/ "inst(X)", "inst(X)", "inst(X)", & 1197 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1198 TYPE(ctrl_out), SAVE :: o_wxq = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1199 'wq', 'wq', '(Pa/s)*(kg/kg)', (/ "inst(X)", "inst(X)", "inst(X)", & 1200 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1201 TYPE(ctrl_out), SAVE :: o_vxphi = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1202 'vphi', 'vphi', 'm2/s', (/ "inst(X)", "inst(X)", "inst(X)", & 1203 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1204 TYPE(ctrl_out), SAVE :: o_wxT = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1205 'wT', 'wT', '"K*Pa/s', (/ "inst(X)", "inst(X)", "inst(X)", & 1206 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1207 TYPE(ctrl_out), SAVE :: o_uxu = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1208 'u2', 'u2', 'm2/s2', (/ "inst(X)", "inst(X)", "inst(X)", & 1209 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1210 TYPE(ctrl_out), SAVE :: o_vxv = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1211 'v2', 'v2', 'm2/s2', (/ "inst(X)", "inst(X)", "inst(X)", & 1212 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1213 TYPE(ctrl_out), SAVE :: o_TxT = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1214 'T2', 'T2', 'K2', (/ "inst(X)", "inst(X)", "inst(X)", & 1215 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1118 1216 1119 1217 END MODULE phys_output_ctrlout_mod -
LMDZ5/branches/testing/libf/phylmd/phys_output_mod.F90
r1795 r1864 1 1 ! $Id$ 2 2 ! 3 4 MODULE phys_output_mod 5 USE indice_sol_mod 6 USE phys_output_var_mod 7 USE aero_mod, only : naero_spc,name_aero 8 USE phys_output_write_mod, ONLY : phys_output_write 9 3 10 ! Abderrahmane 12 2007 4 11 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 10 17 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 11 18 12 MODULE phys_output_mod13 USE indice_sol_mod14 USE phys_output_var_mod15 USE phys_output_ctrlout_mod16 USE aero_mod, only : naero_spc,name_aero17 18 IMPLICIT NONE19 20 PRIVATE histdef2d, histdef3d, conf_physoutputs21 22 REAL, PRIVATE, SAVE :: zdtime23 !$OMP THREADPRIVATE(zdtime)24 25 26 27 19 CONTAINS 28 20 … … 33 25 34 26 SUBROUTINE phys_output_open(rlon,rlat,pim,tabij,ipt,jpt,plon,plat, & 35 jjmp1,nlevSTD,clevSTD, nbteta, &27 jjmp1,nlevSTD,clevSTD,rlevSTD,nbteta, & 36 28 ctetaSTD, dtime, ok_veget, & 37 29 type_ocean, iflag_pbl,ok_mensuel,ok_journe, & 38 30 ok_hf,ok_instan,ok_LES,ok_ade,ok_aie, read_climoz, & 39 31 phys_out_filestations, & 40 new_aod, aerosol_couple, flag_aerosol_strat) 32 new_aod, aerosol_couple, flag_aerosol_strat, & 33 pdtphys, paprs, pphis, pplay, lmax_th, ptconv, ptconvth, ivap, & 34 d_t, qx, d_qx, zmasse, ok_sync) 41 35 42 36 USE iophy … … 47 41 USE mod_phys_lmdz_para 48 42 USE aero_mod, only : naero_spc,name_aero 43 USE phys_output_ctrlout_mod 44 45 #ifdef CPP_XIOS 46 ! ug Pour les sorties XIOS 47 USE wxios 48 #endif 49 49 50 50 IMPLICIT NONE … … 56 56 include "iniprint.h" 57 57 58 real,dimension(klon),intent(in) :: rlon 59 real,dimension(klon),intent(in) :: rlat 60 INTEGER, intent(in) :: pim 58 ! ug Nouveaux arguments nécessaires au histwrite_mod: 59 INTEGER, INTENT(IN) :: ivap 60 INTEGER, DIMENSION(klon), INTENT(IN) :: lmax_th 61 LOGICAL, INTENT(IN) :: ok_sync 62 LOGICAL, DIMENSION(klon, klev), INTENT(IN) :: ptconv, ptconvth 63 REAL, INTENT(IN) :: pdtphys 64 REAL, DIMENSION(klon), INTENT(IN) :: pphis 65 REAL, DIMENSION(klon, klev), INTENT(IN) :: pplay, d_t 66 REAL, DIMENSION(klon, klev+1), INTENT(IN) :: paprs 67 REAL, DIMENSION(klon,klev,nqtot), INTENT(IN):: qx, d_qx 68 REAL, DIMENSION(klon, llm), INTENT(IN) :: zmasse 69 70 71 REAL,DIMENSION(klon),INTENT(IN) :: rlon 72 REAL,DIMENSION(klon),INTENT(IN) :: rlat 73 INTEGER, INTENT(IN) :: pim 61 74 INTEGER, DIMENSION(pim) :: tabij 62 INTEGER, dimension(pim), intent(in) :: ipt, jpt63 REAL, dimension(pim), intent(in) :: plat, plon64 REAL, dimension(pim,2) :: plat_bounds, plon_bounds75 INTEGER,DIMENSION(pim), INTENT(IN) :: ipt, jpt 76 REAL,DIMENSION(pim), INTENT(IN) :: plat, plon 77 REAL,DIMENSION(pim,2) :: plat_bounds, plon_bounds 65 78 66 79 INTEGER :: jjmp1 … … 69 82 LOGICAL :: ok_LES,ok_ade,ok_aie,flag_aerosol_strat 70 83 LOGICAL :: new_aod, aerosol_couple 71 INTEGER, intent(in):: read_climoz ! read ozone climatology84 INTEGER, INTENT(IN):: read_climoz ! read ozone climatology 72 85 ! Allowed values are 0, 1 and 2 73 86 ! 0: do not read an ozone climatology … … 81 94 REAL, DIMENSION(klev) :: Ahyb, Bhyb, Alt 82 95 CHARACTER(LEN=4), DIMENSION(nlevSTD) :: clevSTD 96 REAL, DIMENSION(nlevSTD) :: rlevSTD 83 97 INTEGER :: nsrf, k, iq, iiq, iff, i, j, ilev 84 98 INTEGER :: naero … … 90 104 CHARACTER(LEN=3) :: ctetaSTD(nbteta) 91 105 REAL, DIMENSION(nfiles) :: ecrit_files 92 CHARACTER(LEN=20), DIMENSION(nfiles) :: phys_out_filenames93 106 INTEGER, DIMENSION(iim*jjmp1) :: ndex2d 94 107 INTEGER, DIMENSION(iim*jjmp1*klev) :: ndex3d … … 97 110 INTEGER, DIMENSION(nfiles) :: phys_out_levmin, phys_out_levmax 98 111 INTEGER, DIMENSION(nfiles) :: phys_out_filelevels 99 CHARACTER(LEN=20), DIMENSION(nfiles) :: chtimestep = (/ 'DefFreq', 'DefFreq','DefFreq', 'DefFreq', 'DefFreq', 'DefFreq' /) 112 CHARACTER(LEN=20), DIMENSION(nfiles) :: chtimestep = (/ '1mth', '1mth', '1mth', '1mth', '1mth', & 113 '1mth', '1mth', '1mth', '1mth' /) 100 114 LOGICAL, DIMENSION(nfiles) :: phys_out_filekeys 101 115 LOGICAL, DIMENSION(nfiles) :: phys_out_filestations … … 104 118 ! entre [phys_out_lonmin,phys_out_lonmax] et [phys_out_latmin,phys_out_latmax] 105 119 106 LOGICAL, DIMENSION(nfiles), SAVE :: phys_out_regfkey = (/ .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE. /) 107 REAL, DIMENSION(nfiles), SAVE :: phys_out_lonmin = (/ -180., -180., -180., -180., -180., -180. /) 108 REAL, DIMENSION(nfiles), SAVE :: phys_out_lonmax = (/ 180., 180., 180., 180., 180., 180. /) 109 REAL, DIMENSION(nfiles), SAVE :: phys_out_latmin = (/ -90., -90., -90., -90., -90., -90. /) 110 REAL, DIMENSION(nfiles), SAVE :: phys_out_latmax = (/ 90., 90., 90., 90., 90., 90. /) 120 LOGICAL, DIMENSION(nfiles), SAVE :: phys_out_regfkey = (/ .FALSE., .FALSE., .FALSE., .FALSE., & 121 .FALSE., .FALSE., .FALSE., .FALSE., .FALSE. /) 122 REAL, DIMENSION(nfiles), SAVE :: phys_out_lonmin = (/ -180., -180., -180., -180., & 123 -180., -180., -180., -180., -180. /) 124 REAL, DIMENSION(nfiles), SAVE :: phys_out_lonmax = (/ 180., 180., 180., 180., & 125 180., 180., 180., 180., 180. /) 126 REAL, DIMENSION(nfiles), SAVE :: phys_out_latmin = (/ -90., -90., -90., -90., & 127 -90., -90., -90., -90., -90. /) 128 REAL, DIMENSION(nfiles), SAVE :: phys_out_latmax = (/ 90., 90., 90., 90., & 129 90., 90., 90., 90., 90. /) 130 #ifdef CPP_XIOS 131 ! ug Variables utilisées pour récupérer le calendrier pour xios 132 INTEGER :: x_an, x_mois, x_jour 133 REAL :: x_heure 134 #endif 111 135 112 136 WRITE(lunout,*) 'Debut phys_output_mod.F90' … … 115 139 IF (.NOT. ALLOCATED(o_trac)) ALLOCATE(o_trac(nqtot)) 116 140 IF (.NOT. ALLOCATED(o_trac_cum)) ALLOCATE(o_trac_cum(nqtot)) 117 118 levmax = (/ klev, klev, klev, klev, klev, klev /) 141 ALLOCATE(o_dtr_the(nqtot),o_dtr_con(nqtot),o_dtr_lessi_impa(nqtot)) 142 ALLOCATE(o_dtr_lessi_nucl(nqtot),o_dtr_insc(nqtot),o_dtr_bcscav(nqtot)) 143 ALLOCATE(o_dtr_evapls(nqtot),o_dtr_ls(nqtot),o_dtr_trsp(nqtot)) 144 ALLOCATE(o_dtr_sscav(nqtot),o_dtr_sat(nqtot),o_dtr_uscav(nqtot)) 145 ALLOCATE(o_dtr_dry(nqtot),o_dtr_vdf(nqtot)) 146 147 148 levmax = (/ klev, klev, klev, klev, klev, klev, nlevSTD, nlevSTD, nlevSTD /) 119 149 120 150 phys_out_filenames(1) = 'histmth' … … 124 154 phys_out_filenames(5) = 'histLES' 125 155 phys_out_filenames(6) = 'histstn' 156 phys_out_filenames(7) = 'histmthNMC' 157 phys_out_filenames(8) = 'histdayNMC' 158 phys_out_filenames(9) = 'histhfNMC.nc' 126 159 127 160 type_ecri(1) = 'ave(X)' … … 131 164 type_ecri(5) = 'ave(X)' 132 165 type_ecri(6) = 'inst(X)' 166 type_ecri(7) = 'inst(X)' 167 type_ecri(8) = 'inst(X)' 168 type_ecri(9) = 'inst(X)' 133 169 134 170 clef_files(1) = ok_mensuel … … 138 174 clef_files(5) = ok_LES 139 175 clef_files(6) = ok_instan 176 clef_files(7) = ok_histNMC(1) 177 clef_files(8) = ok_histNMC(2) 178 clef_files(9) = ok_histNMC(3) 140 179 141 180 !sortir des fichiers "stations" si clef_stations(:)=.TRUE. … … 146 185 clef_stations(5) = .FALSE. 147 186 clef_stations(6) = .FALSE. 187 clef_stations(7) = .FALSE. 188 clef_stations(8) = .FALSE. 189 clef_stations(9) = .FALSE. 148 190 149 191 lev_files(1) = lev_histmth … … 153 195 lev_files(5) = lev_histLES 154 196 lev_files(6) = lev_histins 197 lev_files(7) = levout_histNMC(1) 198 lev_files(8) = levout_histNMC(2) 199 lev_files(9) = levout_histNMC(3) 155 200 156 201 ecrit_files(1) = ecrit_mth … … 160 205 ecrit_files(5) = ecrit_LES 161 206 ecrit_files(6) = ecrit_ins 207 ecrit_files(7) = freq_outNMC(1)/86400. 208 ecrit_files(8) = freq_outNMC(2)/86400. 209 ecrit_files(9) = freq_outNMC(3)/86400. 162 210 163 211 !! Lectures des parametres de sorties dans physiq.def … … 195 243 WRITE(lunout,*)'phys_out_filelevels=',lev_files 196 244 245 #ifdef CPP_XIOS 246 ! ug Réglage du calendrier xios 247 !Temps julian => an, mois, jour, heure 248 CALL ymds2ju(annee_ref, 1, day_ref, 0.0, zjulian) 249 CALL ju2ymds(zjulian, x_an, x_mois, x_jour, x_heure) 250 CALL wxios_set_cal(dtime, calend, x_an, x_mois, x_jour, x_heure) 251 #endif 252 197 253 !!!!!!!!!!!!!!!!!!!!!!! Boucle sur les fichiers !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 198 254 ! Appel de histbeg et histvert pour creer le fichier et les niveaux verticaux !! … … 200 256 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 201 257 202 zdtime = dtime ! Frequence ou l on moyenne258 zdtime_moy = dtime ! Frequence ou l on moyenne 203 259 204 260 ! Calcul des Ahyb, Bhyb et Alt … … 226 282 zoutm(iff) = ecrit_files(iff) ! Frequence ou l on ecrit en seconde 227 283 284 285 #ifdef CPP_XIOS 286 ! ug déclaration des axes verticaux de chaque fichier: 287 CALL wxios_add_vaxis("presnivs", phys_out_filenames(iff), & 288 levmax(iff) - levmin(iff) + 1, presnivs(levmin(iff):levmax(iff))) 289 CALL wxios_add_vaxis("Ahyb", phys_out_filenames(iff), & 290 levmax(iff) - levmin(iff) + 1, Ahyb) 291 CALL wxios_add_vaxis("Bhyb", phys_out_filenames(iff), & 292 levmax(iff) - levmin(iff) + 1, Bhyb) 293 CALL wxios_add_vaxis("Ahyb", phys_out_filenames(iff), & 294 levmax(iff) - levmin(iff) + 1, Alt) 295 296 IF (clef_files(iff)) THEN 297 CALL wxios_add_file(phys_out_filenames(iff),chtimestep(iff),lev_files(iff)) 298 END IF 299 #endif 300 228 301 IF (clef_files(iff)) THEN 229 302 … … 243 316 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 244 317 IF (phys_out_regfkey(iff)) then 245 246 318 imin_ins=1 247 319 imax_ins=iim … … 283 355 itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff)) 284 356 else 285 CALL histbeg_phy(phys_out_filenames(iff),itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff)) 357 CALL histbeg_phy_all(phys_out_filenames(iff),itau_phy,zjulian,& 358 dtime,nhorim(iff),nid_files(iff)) 286 359 endif 287 360 288 CALL histvert(nid_files(iff), "presnivs", "Vertical levels", "Pa", & 361 #ifndef CPP_NO_IOIPSL 362 if (iff.le.6) then 363 CALL histvert(nid_files(iff), "presnivs", "Vertical levels", "Pa", & 289 364 levmax(iff) - levmin(iff) + 1, & 290 365 presnivs(levmin(iff):levmax(iff)), nvertm(iff),"down") 291 292 !!!!!!!!!!!!! Traitement des champs 3D pour histhf !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 293 !!!!!!!!!!!!!!! A Revoir plus tard !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 294 ! IF (iff.eq.3.and.lev_files(iff).ge.4) THEN 295 ! CALL histbeg_phy("histhf3d",itau_phy, & 296 ! & zjulian, dtime, & 297 ! & nhorim, nid_hf3d) 298 299 ! CALL histvert(nid_hf3d, "presnivs", & 300 ! & "Vertical levels", "mb", & 301 ! & klev, presnivs/100., nvertm) 302 ! ENDIF 303 ! 304 !!!! Composentes de la coordonnee sigma-hybride 366 !!!! Composantes de la coordonnee sigma-hybride 305 367 CALL histvert(nid_files(iff), "Ahyb","Ahyb comp of Hyb Cord ", "Pa", & 306 368 levmax(iff) - levmin(iff) + 1,Ahyb,nvertap(iff)) … … 309 371 levmax(iff) - levmin(iff) + 1,Bhyb,nvertbp(iff)) 310 372 311 CALL histvert(nid_files(iff), "Alt","Height approx for scale heigh of 8km at levels", "Km", & 373 CALL histvert(nid_files(iff), "Alt","Height approx for scale heigh of 8km at levels", "Km", & 312 374 levmax(iff) - levmin(iff) + 1,Alt,nvertAlt(iff)) 313 375 314 ! CALL histvert(nid_files(iff), "preff","Reference pressure", "Pa", & 315 ! 1,preff,nvertp0(iff)) 316 !!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 317 CALL histdef2d(iff,o_aire) 318 CALL histdef2d(iff,o_contfracATM) 319 320 !!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 321 CALL histdef2d(iff,o_phis) 322 CALL histdef2d(iff,o_contfracOR) 323 CALL histdef2d(iff,o_aireTER) 324 CALL histdef2d(iff,o_flat) 325 CALL histdef2d(iff,o_slp) 326 CALL histdef2d(iff,o_tsol) 327 CALL histdef2d(iff,o_t2m) 328 CALL histdef2d(iff,o_t2m_min) 329 CALL histdef2d(iff,o_t2m_max) 330 CALL histdef2d(iff,o_wind10m) 331 CALL histdef2d(iff,o_wind10max) 332 CALL histdef2d(iff,o_sicf) 333 CALL histdef2d(iff,o_q2m) 334 CALL histdef2d(iff,o_ustar) 335 CALL histdef2d(iff,o_u10m) 336 CALL histdef2d(iff,o_v10m) 337 CALL histdef2d(iff,o_psol) 338 CALL histdef2d(iff,o_qsurf) 339 340 IF (.NOT. ok_veget) THEN 341 CALL histdef2d(iff,o_qsol) 342 ENDIF 343 CALL histdef2d(iff,o_ndayrain) 344 CALL histdef2d(iff,o_precip) 345 CALL histdef2d(iff,o_plul) 346 CALL histdef2d(iff,o_pluc) 347 CALL histdef2d(iff,o_snow) 348 CALL histdef2d(iff,o_msnow) 349 CALL histdef2d(iff,o_fsnow) 350 CALL histdef2d(iff,o_evap) 351 CALL histdef2d(iff,o_tops) 352 CALL histdef2d(iff,o_tops0) 353 CALL histdef2d(iff,o_topl) 354 CALL histdef2d(iff,o_topl0) 355 CALL histdef2d(iff,o_SWupTOA) 356 CALL histdef2d(iff,o_SWupTOAclr) 357 CALL histdef2d(iff,o_SWdnTOA) 358 CALL histdef2d(iff,o_SWdnTOAclr) 359 CALL histdef2d(iff,o_nettop) 360 CALL histdef2d(iff,o_SWup200) 361 CALL histdef2d(iff,o_SWup200clr) 362 CALL histdef2d(iff,o_SWdn200) 363 CALL histdef2d(iff,o_SWdn200clr) 364 CALL histdef2d(iff,o_LWup200) 365 CALL histdef2d(iff,o_LWup200clr) 366 CALL histdef2d(iff,o_LWdn200) 367 CALL histdef2d(iff,o_LWdn200clr) 368 CALL histdef2d(iff,o_sols) 369 CALL histdef2d(iff,o_sols0) 370 CALL histdef2d(iff,o_soll) 371 CALL histdef2d(iff,o_radsol) 372 CALL histdef2d(iff,o_soll0) 373 CALL histdef2d(iff,o_SWupSFC) 374 CALL histdef2d(iff,o_SWupSFCclr) 375 CALL histdef2d(iff,o_SWdnSFC) 376 CALL histdef2d(iff,o_SWdnSFCclr) 377 CALL histdef2d(iff,o_LWupSFC) 378 CALL histdef2d(iff,o_LWdnSFC) 379 CALL histdef2d(iff,o_LWupSFCclr) 380 CALL histdef2d(iff,o_LWdnSFCclr) 381 CALL histdef2d(iff,o_bils) 382 CALL histdef2d(iff,o_bils_ec) 383 CALL histdef2d(iff,o_bils_tke) 384 CALL histdef2d(iff,o_bils_diss) 385 CALL histdef2d(iff,o_bils_kinetic) 386 CALL histdef2d(iff,o_bils_enthalp) 387 CALL histdef2d(iff,o_bils_latent) 388 CALL histdef2d(iff,o_sens) 389 CALL histdef2d(iff,o_fder) 390 CALL histdef2d(iff,o_ffonte) 391 CALL histdef2d(iff,o_fqcalving) 392 CALL histdef2d(iff,o_fqfonte) 393 CALL histdef2d(iff,o_taux) 394 CALL histdef2d(iff,o_tauy) 395 396 DO nsrf = 1, nbsrf 397 CALL histdef2d(iff,o_pourc_srf(nsrf)) 398 CALL histdef2d(iff,o_fract_srf(nsrf)) 399 CALL histdef2d(iff, o_taux_srf(nsrf)) 400 CALL histdef2d(iff, o_tauy_srf(nsrf)) 401 CALL histdef2d(iff, o_tsol_srf(nsrf)) 402 CALL histdef2d(iff, o_evappot_srf(nsrf)) 403 CALL histdef2d(iff, o_ustar_srf(nsrf)) 404 CALL histdef2d(iff, o_u10m_srf(nsrf)) 405 CALL histdef2d(iff, o_evap_srf(nsrf)) 406 CALL histdef2d(iff, o_v10m_srf(nsrf)) 407 CALL histdef2d(iff, o_t2m_srf(nsrf)) 408 CALL histdef2d(iff, o_sens_srf(nsrf)) 409 CALL histdef2d(iff, o_lat_srf(nsrf)) 410 CALL histdef2d(iff, o_flw_srf(nsrf)) 411 CALL histdef2d(iff, o_fsw_srf(nsrf)) 412 CALL histdef2d(iff, o_wbils_srf(nsrf)) 413 CALL histdef2d(iff, o_wbilo_srf(nsrf)) 414 IF (iflag_pbl>1 ) then 415 CALL histdef2d(iff, o_tke_srf(nsrf)) 416 CALL histdef2d(iff, o_tke_max_srf(nsrf)) 417 ENDIF 418 419 CALL histdef2d(iff, o_albe_srf(nsrf)) 420 CALL histdef2d(iff, o_rugs_srf(nsrf)) 421 CALL histdef2d(iff, o_ages_srf(nsrf)) 422 END DO 423 424 IF (new_aod .AND. (.NOT. aerosol_couple)) THEN 425 IF (ok_ade.OR.ok_aie) THEN 426 CALL histdef2d(iff,o_od550aer) 427 CALL histdef2d(iff,o_od865aer) 428 CALL histdef2d(iff,o_absvisaer) 429 CALL histdef2d(iff,o_od550lt1aer) 430 CALL histdef2d(iff,o_sconcso4) 431 CALL histdef2d(iff,o_sconcoa) 432 CALL histdef2d(iff,o_sconcbc) 433 CALL histdef2d(iff,o_sconcss) 434 CALL histdef2d(iff,o_sconcdust) 435 CALL histdef3d(iff,o_concso4) 436 CALL histdef3d(iff,o_concoa) 437 CALL histdef3d(iff,o_concbc) 438 CALL histdef3d(iff,o_concss) 439 CALL histdef3d(iff,o_concdust) 440 CALL histdef2d(iff,o_loadso4) 441 CALL histdef2d(iff,o_loadoa) 442 CALL histdef2d(iff,o_loadbc) 443 CALL histdef2d(iff,o_loadss) 444 CALL histdef2d(iff,o_loaddust) 445 !--STRAT AER 446 ENDIF 447 IF (ok_ade.OR.ok_aie.OR.flag_aerosol_strat) THEN 448 DO naero = 1, naero_spc 449 CALL histdef2d(iff, o_tausumaero(naero)) 450 END DO 451 ENDIF 452 ENDIF 453 454 IF (ok_ade) THEN 455 CALL histdef2d(iff,o_topswad) 456 CALL histdef2d(iff,o_topswad0) 457 CALL histdef2d(iff,o_solswad) 458 CALL histdef2d(iff,o_solswad0) 459 CALL histdef2d(iff,o_swtoaas_nat) 460 CALL histdef2d(iff,o_swsrfas_nat) 461 CALL histdef2d(iff,o_swtoacs_nat) 462 CALL histdef2d(iff,o_swsrfcs_nat) 463 CALL histdef2d(iff,o_swtoaas_ant) 464 CALL histdef2d(iff,o_swsrfas_ant) 465 CALL histdef2d(iff,o_swtoacs_ant) 466 CALL histdef2d(iff,o_swsrfcs_ant) 467 468 IF (.NOT. aerosol_couple) THEN 469 CALL histdef2d(iff,o_swtoacf_nat) 470 CALL histdef2d(iff,o_swsrfcf_nat) 471 CALL histdef2d(iff,o_swtoacf_ant) 472 CALL histdef2d(iff,o_swsrfcf_ant) 473 CALL histdef2d(iff,o_swtoacf_zero) 474 CALL histdef2d(iff,o_swsrfcf_zero) 475 ENDIF 476 ENDIF 477 478 IF (ok_aie) THEN 479 CALL histdef2d(iff,o_topswai) 480 CALL histdef2d(iff,o_solswai) 481 !Cloud droplet number concentration 482 CALL histdef3d(iff,o_scdnc) 483 CALL histdef2d(iff,o_cldncl) 484 CALL histdef3d(iff,o_reffclws) 485 CALL histdef3d(iff,o_reffclwc) 486 CALL histdef2d(iff,o_cldnvi) 487 CALL histdef3d(iff,o_lcc3d) 488 CALL histdef3d(iff,o_lcc3dcon) 489 CALL histdef3d(iff,o_lcc3dstra) 490 CALL histdef2d(iff,o_lcc) 491 CALL histdef2d(iff,o_reffclwtop) 492 ENDIF 493 CALL histdef2d(iff,o_alb1) 494 CALL histdef2d(iff,o_alb2) 495 CALL histdef2d(iff,o_cdrm) 496 CALL histdef2d(iff,o_cdrh) 497 CALL histdef2d(iff,o_cldl) 498 CALL histdef2d(iff,o_cldm) 499 CALL histdef2d(iff,o_cldh) 500 CALL histdef2d(iff,o_cldt) 501 CALL histdef2d(iff,o_cldq) 502 CALL histdef2d(iff,o_lwp) 503 CALL histdef2d(iff,o_iwp) 504 CALL histdef2d(iff,o_ue) 505 CALL histdef2d(iff,o_ve) 506 CALL histdef2d(iff,o_uq) 507 CALL histdef2d(iff,o_vq) 508 509 IF(iflag_con.GE.3) THEN ! sb 510 CALL histdef2d(iff,o_cape) 511 CALL histdef2d(iff,o_pbase) 512 CALL histdef2d(iff,o_ptop) 513 CALL histdef2d(iff,o_fbase) 514 IF (iflag_con /= 30) THEN 515 CALL histdef2d(iff,o_plcl) 516 CALL histdef2d(iff,o_plfc) 517 CALL histdef2d(iff,o_wbeff) 518 ENDIF 519 CALL histdef2d(iff,o_cape_max) 520 CALL histdef3d(iff,o_upwd) 521 CALL histdef3d(iff,o_Ma) 522 CALL histdef3d(iff,o_dnwd) 523 CALL histdef3d(iff,o_dnwd0) 524 CALL histdef3d(iff,o_mc) 525 CALL histdef2d(iff,o_ftime_con) 526 ENDIF !iflag_con .GE. 3 527 CALL histdef2d(iff,o_prw) 528 CALL histdef2d(iff,o_s_pblh) 529 CALL histdef2d(iff,o_s_pblt) 530 CALL histdef2d(iff,o_s_lcl) 531 CALL histdef2d(iff,o_s_therm) 532 !IM : Les champs suivants (s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F 533 !CALL histdef2d(iff, & 534 !o_s_capCL%flag,o_s_capCL%name, "Conv avlbl pot enerfor ABL", "J/m2" ) 535 !CALL histdef2d(iff, & 536 !o_s_oliqCL%flag,o_s_oliqCL%name, "Liq Water in BL", "kg/m2") 537 !CALL histdef2d(iff, & 538 !o_s_cteiCL%flag,o_s_cteiCL%name, "Instability criteria(ABL)", "K") 539 !CALL histdef2d(iff, & 540 !o_s_trmb1%flag,o_s_trmb1%name, "deep_cape(HBTM2)", "J/m2") 541 !CALL histdef2d(iff, & 542 !o_s_trmb2%flag,o_s_trmb2%name, "inhibition (HBTM2)", "J/m2") 543 !CALL histdef2d(iff, & 544 !o_s_trmb3%flag,o_s_trmb3%name, "Point Omega (HBTM2)", "m") 545 546 ! Champs interpolles sur des niveaux de pression 547 548 ! Attention a reverifier 549 550 ilev=0 551 DO k=1, nlevSTD 552 bb2=clevSTD(k) 553 IF(bb2.EQ."850".OR.bb2.EQ."700".OR.bb2.EQ."500".OR.bb2.EQ."200" & 554 .OR.bb2.EQ."100".OR.bb2.EQ."50".OR.bb2.EQ."10")THEN 555 ilev=ilev+1 556 ! print*,'ilev k bb2 flag name ',ilev,k, bb2,o_uSTDlevs(ilev)%flag,o_uSTDlevs(ilev)%name 557 CALL histdef2d(iff,o_uSTDlevs(ilev)) 558 CALL histdef2d(iff,o_vSTDlevs(ilev)) 559 CALL histdef2d(iff,o_wSTDlevs(ilev)) 560 CALL histdef2d(iff,o_zSTDlevs(ilev)) 561 CALL histdef2d(iff,o_qSTDlevs(ilev)) 562 CALL histdef2d(iff,o_tSTDlevs(ilev)) 563 ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR."500".OR.bb2.EQ."200".OR.bb2.EQ."50".OR.bb2.EQ."10") 564 ENDDO 565 566 CALL histdef2d(iff,o_t_oce_sic) 567 568 IF (type_ocean=='slab') THEN 569 CALL histdef2d(iff,o_slab_bils) 570 ENDIF 571 572 ! Couplage conv-CL 573 IF (iflag_con.GE.3) THEN 574 IF (iflag_coupl>=1) THEN 575 CALL histdef2d(iff,o_ale_bl) 576 CALL histdef2d(iff,o_alp_bl) 577 ENDIF 578 ENDIF !(iflag_con.GE.3) 579 580 CALL histdef2d(iff,o_weakinv) 581 CALL histdef2d(iff,o_dthmin) 582 583 CALL histdef2d(iff,o_rh2m) 584 CALL histdef2d(iff,o_rh2m_min) 585 CALL histdef2d(iff,o_rh2m_max) 586 587 CALL histdef2d(iff,o_qsat2m) 588 CALL histdef2d(iff,o_tpot) 589 CALL histdef2d(iff,o_tpote) 590 CALL histdef2d(iff,o_SWnetOR) 591 CALL histdef2d(iff,o_SWdownOR) 592 CALL histdef2d(iff,o_LWdownOR) 593 CALL histdef2d(iff,o_snowl) 594 CALL histdef2d(iff,o_solldown) 595 CALL histdef2d(iff,o_dtsvdfo) 596 CALL histdef2d(iff,o_dtsvdft) 597 CALL histdef2d(iff,o_dtsvdfg) 598 CALL histdef2d(iff,o_dtsvdfi) 599 CALL histdef2d(iff,o_rugs) 600 601 ! Champs 3D: 602 CALL histdef3d(iff,o_ec550aer) 603 CALL histdef3d(iff,o_lwcon) 604 CALL histdef3d(iff,o_iwcon) 605 CALL histdef3d(iff,o_temp) 606 CALL histdef3d(iff,o_theta) 607 CALL histdef3d(iff,o_ovap) 608 CALL histdef3d(iff,o_oliq) 609 CALL histdef3d(iff,o_ovapinit) 610 CALL histdef3d(iff,o_geop) 611 CALL histdef3d(iff,o_vitu) 612 CALL histdef3d(iff,o_vitv) 613 CALL histdef3d(iff,o_vitw) 614 CALL histdef3d(iff,o_pres) 615 CALL histdef3d(iff,o_paprs) 616 CALL histdef3d(iff,o_mass) 617 CALL histdef3d(iff,o_zfull) 618 CALL histdef3d(iff,o_zhalf) 619 CALL histdef3d(iff,o_rneb) 620 CALL histdef3d(iff,o_rnebcon) 621 CALL histdef3d(iff,o_rnebls) 622 CALL histdef3d(iff,o_rhum) 623 CALL histdef3d(iff,o_ozone) 624 625 IF (read_climoz == 2) THEN 626 CALL histdef3d(iff,o_ozone_light) 627 END IF 628 629 CALL histdef3d(iff,o_dtphy) 630 CALL histdef3d(iff,o_dqphy) 631 CALL histdef3d(iff,o_cldtau) 632 CALL histdef3d(iff,o_cldemi) 633 !IM: bug ?? dimensionnement variables (klon,klev+1) pmflxr, pmflxs, prfl, psfl 634 CALL histdef3d(iff,o_pr_con_l) 635 CALL histdef3d(iff,o_pr_con_i) 636 CALL histdef3d(iff,o_pr_lsc_l) 637 CALL histdef3d(iff,o_pr_lsc_i) 638 !Cloud droplet effective radius 639 CALL histdef3d(iff,o_re) 640 CALL histdef3d(iff,o_fl) 641 !FH Sorties pour la couche limite 642 IF (iflag_pbl>1) THEN 643 CALL histdef3d(iff,o_tke) 644 CALL histdef3d(iff,o_tke_max) 645 ENDIF 646 CALL histdef3d(iff,o_kz) 647 CALL histdef3d(iff,o_kz_max) 648 CALL histdef3d(iff,o_clwcon) 649 CALL histdef3d(iff,o_dtdyn) 650 CALL histdef3d(iff,o_dqdyn) 651 CALL histdef3d(iff,o_dudyn) 652 CALL histdef3d(iff,o_dvdyn) 653 CALL histdef3d(iff,o_dtcon) 654 CALL histdef3d(iff,o_ducon) 655 CALL histdef3d(iff,o_dvcon) 656 CALL histdef3d(iff,o_dqcon) 657 658 ! Wakes 659 IF(iflag_con.EQ.3) THEN 660 IF (iflag_wake >= 1) THEN 661 CALL histdef2d(iff,o_ale_wk) 662 CALL histdef2d(iff,o_alp_wk) 663 CALL histdef2d(iff,o_ale) 664 CALL histdef2d(iff,o_alp) 665 CALL histdef2d(iff,o_cin) 666 CALL histdef2d(iff,o_wape) 667 CALL histdef2d(iff,o_wake_h) 668 CALL histdef2d(iff,o_wake_s) 669 CALL histdef3d(iff,o_dtwak) 670 CALL histdef3d(iff,o_dqwak) 671 CALL histdef3d(iff,o_wake_deltat) 672 CALL histdef3d(iff,o_wake_deltaq) 673 CALL histdef3d(iff,o_wake_omg) 674 ENDIF 675 !!! RomP CALL histdef3d(iff,o_Vprecip%flag,o_Vprecip%name, "precipitation vertical profile", "-") 676 CALL histdef3d(iff,o_ftd) 677 CALL histdef3d(iff,o_fqd) 678 ENDIF !(iflag_con.EQ.3) 679 680 IF(iflag_con.GE.3) THEN ! RomP >>> 681 CALL histdef3d(iff,o_wdtrainA) 682 CALL histdef3d(iff,o_wdtrainM) 683 CALL histdef3d(iff,o_Vprecip) 684 ENDIF !(iflag_con.GE.3) ! <<< RomP 685 686 !!! nrlmd le 10/04/2012 687 688 IF (iflag_trig_bl>=1) THEN 689 CALL histdef2d(iff,o_n2) 690 CALL histdef2d(iff,o_s2) 691 CALL histdef2d(iff,o_proba_notrig) 692 CALL histdef2d(iff,o_random_notrig) 693 CALL histdef2d(iff,o_ale_bl_trig) 694 CALL histdef2d(iff,o_ale_bl_stat) 695 ENDIF !(iflag_trig_bl>=1) 696 697 IF (iflag_clos_bl>=1) THEN 698 CALL histdef2d(iff,o_alp_bl_det) 699 CALL histdef2d(iff,o_alp_bl_fluct_m) 700 CALL histdef2d(iff,o_alp_bl_fluct_tke) 701 CALL histdef2d(iff,o_alp_bl_conv) 702 CALL histdef2d(iff,o_alp_bl_stat) 703 ENDIF !(iflag_clos_bl>=1) 704 705 !!! fin nrlmd le 10/04/2012 706 CALL histdef3d(iff,o_dtlsc) 707 CALL histdef3d(iff,o_dtlschr) 708 CALL histdef3d(iff,o_dqlsc) 709 CALL histdef3d(iff,o_beta_prec) 710 CALL histdef3d(iff,o_dtvdf) 711 CALL histdef3d(iff,o_dtdis) 712 CALL histdef3d(iff,o_dqvdf) 713 CALL histdef3d(iff,o_dteva) 714 CALL histdef3d(iff,o_dqeva) 715 CALL histdef3d(iff,o_ptconv) 716 CALL histdef3d(iff,o_ratqs) 717 CALL histdef3d(iff,o_dtthe) 718 719 IF (iflag_thermals.ge.1) THEN 720 CALL histdef3d(iff,o_dqlscth) 721 CALL histdef3d(iff,o_dqlscst) 722 CALL histdef3d(iff,o_dtlscth) 723 CALL histdef3d(iff,o_dtlscst) 724 CALL histdef2d(iff,o_plulth) 725 CALL histdef2d(iff,o_plulst) 726 CALL histdef2d(iff,o_lmaxth) 727 CALL histdef3d(iff,o_ptconvth) 728 CALL histdef3d(iff,o_f_th) 729 CALL histdef3d(iff,o_e_th) 730 CALL histdef3d(iff,o_w_th) 731 CALL histdef3d(iff,o_lambda_th) 732 CALL histdef2d(iff,o_ftime_th) 733 CALL histdef3d(iff,o_q_th) 734 CALL histdef3d(iff,o_a_th) 735 CALL histdef3d(iff,o_d_th) 736 CALL histdef2d(iff,o_f0_th) 737 CALL histdef2d(iff,o_zmax_th) 738 CALL histdef3d(iff,o_dqthe) 739 ENDIF !iflag_thermals.ge.1 740 741 CALL histdef3d(iff,o_dtajs) 742 CALL histdef3d(iff,o_dqajs) 743 CALL histdef3d(iff,o_dtswr) 744 CALL histdef3d(iff,o_dtsw0) 745 CALL histdef3d(iff,o_dtlwr) 746 CALL histdef3d(iff,o_dtlw0) 747 CALL histdef3d(iff,o_dtec) 748 CALL histdef3d(iff,o_duvdf) 749 CALL histdef3d(iff,o_dvvdf) 750 751 IF (ok_orodr) THEN 752 CALL histdef3d(iff,o_duoro) 753 CALL histdef3d(iff,o_dvoro) 754 CALL histdef3d(iff,o_dtoro) 755 ENDIF 756 757 IF (ok_orolf) THEN 758 CALL histdef3d(iff,o_dulif) 759 CALL histdef3d(iff,o_dvlif) 760 CALL histdef3d(iff,o_dtlif) 761 ENDIF 762 763 IF (ok_hines) then 764 CALL histdef3d(iff,o_duhin) 765 CALL histdef3d(iff,o_dvhin) 766 CALL histdef3d(iff,o_dthin) 767 ENDIF 768 769 CALL histdef3d(iff,o_rsu) 770 CALL histdef3d(iff,o_rsd) 771 CALL histdef3d(iff,o_rlu) 772 CALL histdef3d(iff,o_rld) 773 CALL histdef3d(iff,o_rsucs) 774 CALL histdef3d(iff,o_rsdcs) 775 CALL histdef3d(iff,o_rlucs) 776 CALL histdef3d(iff,o_rldcs) 777 CALL histdef3d(iff,o_tnt) 778 CALL histdef3d(iff,o_tntc) 779 CALL histdef3d(iff,o_tntr) 780 CALL histdef3d(iff,o_tntscpbl) 781 CALL histdef3d(iff,o_tnhus) 782 CALL histdef3d(iff,o_tnhusc) 783 CALL histdef3d(iff,o_tnhusscpbl) 784 CALL histdef3d(iff,o_evu) 785 CALL histdef3d(iff,o_h2o) 786 CALL histdef3d(iff,o_mcd) 787 CALL histdef3d(iff,o_dmc) 788 CALL histdef3d(iff,o_ref_liq) 789 CALL histdef3d(iff,o_ref_ice) 790 791 IF (RCO2_per.NE.RCO2_act.OR.RCH4_per.NE.RCH4_act.OR. & 792 RN2O_per.NE.RN2O_act.OR.RCFC11_per.NE.RCFC11_act.OR. & 793 RCFC12_per.NE.RCFC12_act) THEN 794 CALL histdef2d(iff,o_rsut4co2) 795 CALL histdef2d(iff,o_rlut4co2) 796 CALL histdef2d(iff,o_rsutcs4co2) 797 CALL histdef2d(iff,o_rlutcs4co2) 798 CALL histdef3d(iff,o_rsu4co2) 799 CALL histdef3d(iff,o_rlu4co2) 800 CALL histdef3d(iff,o_rsucs4co2) 801 CALL histdef3d(iff,o_rlucs4co2) 802 CALL histdef3d(iff,o_rsd4co2) 803 CALL histdef3d(iff,o_rld4co2) 804 CALL histdef3d(iff,o_rsdcs4co2) 805 CALL histdef3d(iff,o_rldcs4co2) 806 807 ENDIF 808 376 else 377 CALL histvert(nid_files(iff), "plev", "pressure", "Pa", & 378 levmax(iff) - levmin(iff) + 1, & 379 rlevSTD(levmin(iff):levmax(iff)), nvertm(iff), "down") 380 endif 381 #endif 809 382 810 383 IF (nqtot>=3) THEN 811 384 DO iq=3,nqtot 812 385 iiq=niadv(iq) 813 o_trac(iq-2) = ctrl_out((/ 4, 5, 1, 1, 1, 10 /),tname(iiq),'Tracer '//ttext(iiq), "-",& 814 (/ '', '', '', '', '', '' /)) 815 CALL histdef3d(iff, o_trac(iq-2)) 816 o_trac_cum(iq-2) = ctrl_out((/ 3, 4, 10, 10, 10, 10 /),'cum'//tname(iiq),& 817 'Cumulated tracer '//ttext(iiq), "-", (/ '', '', '', '', '', '' /)) 818 CALL histdef2d(iff, o_trac_cum(iq-2)) 386 o_trac(iq-2) = ctrl_out((/ 4, 5, 1, 1, 1, 10, 11, 11, 11 /), & 387 tname(iiq),'Tracer '//ttext(iiq), "-", & 388 (/ '', '', '', '', '', '', '', '', '' /)) 389 390 o_dtr_vdf(iq-2) = ctrl_out((/ 5, 7, 7, 7, 10, 10, 11, 11, 11 /), & 391 'd'//trim(tname(iq))//'_vdf', & 392 'Tendance tracer '//ttext(iiq), "-" , & 393 (/ '', '', '', '', '', '', '', '', '' /)) 394 395 o_dtr_the(iq-2) = ctrl_out((/ 5, 7, 7, 7, 10, 10, 11, 11, 11 /), & 396 'd'//trim(tname(iq))//'_the', & 397 'Tendance tracer '//ttext(iiq), "-", & 398 (/ '', '', '', '', '', '', '', '', '' /)) 399 400 o_dtr_con(iq-2) = ctrl_out((/ 5, 7, 7, 7, 10, 10, 11, 11, 11 /), & 401 'd'//trim(tname(iq))//'_con', & 402 'Tendance tracer '//ttext(iiq), "-", & 403 (/ '', '', '', '', '', '', '', '', '' /)) 404 405 o_dtr_lessi_impa(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 406 'd'//trim(tname(iq))//'_lessi_impa', & 407 'Tendance tracer '//ttext(iiq), "-", & 408 (/ '', '', '', '', '', '', '', '', '' /)) 409 410 o_dtr_lessi_nucl(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 411 'd'//trim(tname(iq))//'_lessi_nucl', & 412 'Tendance tracer '//ttext(iiq), "-", & 413 (/ '', '', '', '', '', '', '', '', '' /)) 414 415 o_dtr_insc(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 416 'd'//trim(tname(iq))//'_insc', & 417 'Tendance tracer '//ttext(iiq), "-", & 418 (/ '', '', '', '', '', '', '', '', '' /)) 419 420 o_dtr_bcscav(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 421 'd'//trim(tname(iq))//'_bcscav', & 422 'Tendance tracer '//ttext(iiq), "-", & 423 (/ '', '', '', '', '', '', '', '', '' /)) 424 425 o_dtr_evapls(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 426 'd'//trim(tname(iq))//'_evapls', & 427 'Tendance tracer '//ttext(iiq), "-", & 428 (/ '', '', '', '', '', '', '', '', '' /)) 429 430 o_dtr_ls(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 431 'd'//trim(tname(iq))//'_ls', & 432 'Tendance tracer '//ttext(iiq), "-", & 433 (/ '', '', '', '', '', '', '', '', '' /)) 434 435 o_dtr_trsp(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 436 'd'//trim(tname(iq))//'_trsp', & 437 'Tendance tracer '//ttext(iiq), "-", & 438 (/ '', '', '', '', '', '', '', '', '' /)) 439 440 o_dtr_sscav(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 441 'd'//trim(tname(iq))//'_sscav', & 442 'Tendance tracer '//ttext(iiq), "-", & 443 (/ '', '', '', '', '', '', '', '', '' /)) 444 445 o_dtr_sat(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 446 'd'//trim(tname(iq))//'_sat', & 447 'Tendance tracer '//ttext(iiq), "-", & 448 (/ '', '', '', '', '', '', '', '', '' /)) 449 450 o_dtr_uscav(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 451 'd'//trim(tname(iq))//'_uscav', & 452 'Tendance tracer '//ttext(iiq), "-", & 453 (/ '', '', '', '', '', '', '', '', '' /)) 454 455 o_dtr_dry(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 456 'cum'//'d'//trim(tname(iq))//'_dry', & 457 'tracer tendency dry deposition'//ttext(iiq), "-", & 458 (/ '', '', '', '', '', '', '', '', '' /)) 459 460 o_trac_cum(iq-2) = ctrl_out((/ 3, 4, 10, 10, 10, 10, 11, 11, 11 /), & 461 'cum'//tname(iiq),& 462 'Cumulated tracer '//ttext(iiq), "-", & 463 (/ '', '', '', '', '', '', '', '', '' /)) 819 464 ENDDO 820 465 ENDIF 821 822 CALL histend(nid_files(iff))823 824 ndex2d = 0825 ndex3d = 0826 466 827 467 ENDIF ! clef_files … … 837 477 ecrit_LES = ecrit_files(5) 838 478 ecrit_ins = ecrit_files(6) 479 freq_outNMC(1) = ecrit_files(7)*86400. 480 freq_outNMC(2) = ecrit_files(8)*86400. 481 freq_outNMC(3) = ecrit_files(9)*86400. 839 482 840 483 WRITE(lunout,*)'swaero_diag=',swaero_diag … … 842 485 end SUBROUTINE phys_output_open 843 486 844 SUBROUTINE histdef2d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 845 846 USE ioipsl 847 USE dimphy 848 USE mod_phys_lmdz_para 849 USE iophy 850 851 IMPLICIT NONE 852 853 INCLUDE "dimensions.h" 854 INCLUDE "temps.h" 855 INCLUDE "clesphys.h" 856 857 INTEGER :: iff 858 LOGICAL :: lpoint 859 INTEGER, DIMENSION(nfiles) :: flag_var 860 CHARACTER(LEN=20) :: nomvar 861 CHARACTER(LEN=*) :: titrevar 862 CHARACTER(LEN=*) :: unitvar 863 864 REAL zstophym 865 866 IF (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') THEN 867 zstophym=zoutm(iff) 868 ELSE 869 zstophym=zdtime 870 ENDIF 871 872 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 873 CALL conf_physoutputs(nomvar,flag_var) 874 875 IF(.NOT.lpoint) THEN 876 IF ( flag_var(iff)<=lev_files(iff) ) THEN 877 CALL histdef (nid_files(iff),nomvar,titrevar,unitvar, & 878 iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & 879 type_ecri(iff), zstophym,zoutm(iff)) 880 ENDIF 881 ELSE 882 IF ( flag_var(iff)<=lev_files(iff) ) THEN 883 CALL histdef (nid_files(iff),nomvar,titrevar,unitvar, & 884 npstn,1,nhorim(iff), 1,1,1, -99, 32, & 885 type_ecri(iff), zstophym,zoutm(iff)) 886 ENDIF 887 ENDIF 888 889 ! Set swaero_diag=true if at least one of the concerned variables are defined 890 IF (nomvar=='topswad' .OR. nomvar=='topswai' .OR. nomvar=='solswad' .OR. nomvar=='solswai' ) THEN 891 IF ( flag_var(iff)<=lev_files(iff) ) THEN 892 swaero_diag=.TRUE. 893 END IF 894 END IF 895 END SUBROUTINE histdef2d_old 896 897 SUBROUTINE histdef2d (iff,var) 898 899 USE ioipsl 900 USE dimphy 901 USE mod_phys_lmdz_para 902 USE iophy 903 904 IMPLICIT NONE 905 906 INCLUDE "dimensions.h" 907 INCLUDE "temps.h" 908 INCLUDE "clesphys.h" 909 910 INTEGER :: iff 911 TYPE(ctrl_out) :: var 912 913 REAL zstophym 914 CHARACTER(LEN=20) :: typeecrit 915 916 ! ug On récupère le type écrit de la structure: 917 ! Assez moche, à refaire si meilleure méthode... 918 IF (INDEX(var%type_ecrit(iff), "once") > 0) THEN 919 typeecrit = 'once' 920 ELSE IF(INDEX(var%type_ecrit(iff), "t_min") > 0) THEN 921 typeecrit = 't_min(X)' 922 ELSE IF(INDEX(var%type_ecrit(iff), "t_max") > 0) THEN 923 typeecrit = 't_max(X)' 924 ELSE IF(INDEX(var%type_ecrit(iff), "inst") > 0) THEN 925 typeecrit = 'inst(X)' 926 ELSE 927 typeecrit = type_ecri_files(iff) 928 ENDIF 929 930 IF (typeecrit=='inst(X)'.OR.typeecrit=='once') THEN 931 zstophym=zoutm(iff) 932 ELSE 933 zstophym=zdtime 934 ENDIF 935 936 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 937 CALL conf_physoutputs(var%name, var%flag) 938 939 IF(.NOT.clef_stations(iff)) THEN 940 IF ( var%flag(iff)<=lev_files(iff) ) THEN 941 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 942 iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & 943 typeecrit, zstophym,zoutm(iff)) 944 ENDIF 945 ELSE 946 IF ( var%flag(iff)<=lev_files(iff)) THEN 947 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 948 npstn,1,nhorim(iff), 1,1,1, -99, 32, & 949 typeecrit, zstophym,zoutm(iff)) 950 ENDIF 951 ENDIF 952 953 ! Set swaero_diag=true if at least one of the concerned variables are defined 954 IF (var%name=='topswad' .OR. var%name=='topswai' .OR. var%name=='solswad' .OR. var%name=='solswai' ) THEN 955 IF ( var%flag(iff)<=lev_files(iff) ) THEN 956 swaero_diag=.TRUE. 957 END IF 958 END IF 959 END SUBROUTINE histdef2d 960 961 SUBROUTINE histdef3d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 962 963 USE ioipsl 964 USE dimphy 965 USE mod_phys_lmdz_para 966 USE iophy 967 968 IMPLICIT NONE 969 970 INCLUDE "dimensions.h" 971 INCLUDE "temps.h" 972 ! INCLUDE "indicesol.h" 973 INCLUDE "clesphys.h" 974 975 INTEGER :: iff 976 LOGICAL :: lpoint 977 INTEGER, DIMENSION(nfiles) :: flag_var 978 CHARACTER(LEN=20) :: nomvar 979 CHARACTER(LEN=*) :: titrevar 980 CHARACTER(LEN=*) :: unitvar 981 982 REAL zstophym 983 984 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 985 CALL conf_physoutputs(nomvar,flag_var) 986 987 IF (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') THEN 988 zstophym=zoutm(iff) 989 ELSE 990 zstophym=zdtime 991 ENDIF 992 993 IF(.NOT.lpoint) THEN 994 IF ( flag_var(iff)<=lev_files(iff) ) THEN 995 CALL histdef (nid_files(iff), nomvar, titrevar, unitvar, & 996 iim, jj_nb, nhorim(iff), klev, levmin(iff), & 997 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, type_ecri(iff), & 998 zstophym, zoutm(iff)) 999 ENDIF 1000 ELSE 1001 IF ( flag_var(iff)<=lev_files(iff) ) THEN 1002 CALL histdef (nid_files(iff), nomvar, titrevar, unitvar, & 1003 npstn,1,nhorim(iff), klev, levmin(iff), & 1004 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, & 1005 type_ecri(iff), zstophym,zoutm(iff)) 1006 ENDIF 1007 ENDIF 1008 END SUBROUTINE histdef3d_old 1009 1010 SUBROUTINE histdef3d (iff,var) 1011 1012 USE ioipsl 1013 USE dimphy 1014 USE mod_phys_lmdz_para 1015 USE iophy 1016 1017 IMPLICIT NONE 1018 1019 INCLUDE "dimensions.h" 1020 INCLUDE "temps.h" 1021 INCLUDE "clesphys.h" 1022 1023 INTEGER :: iff 1024 TYPE(ctrl_out) :: var 1025 1026 REAL zstophym 1027 CHARACTER(LEN=20) :: typeecrit 1028 1029 ! ug On récupère le type écrit de la structure: 1030 ! Assez moche, à refaire si meilleure méthode... 1031 IF (INDEX(var%type_ecrit(iff), "once") > 0) THEN 1032 typeecrit = 'once' 1033 ELSE IF(INDEX(var%type_ecrit(iff), "t_min") > 0) THEN 1034 typeecrit = 't_min(X)' 1035 ELSE IF(INDEX(var%type_ecrit(iff), "t_max") > 0) THEN 1036 typeecrit = 't_max(X)' 1037 ELSE IF(INDEX(var%type_ecrit(iff), "inst") > 0) THEN 1038 typeecrit = 'inst(X)' 1039 ELSE 1040 typeecrit = type_ecri_files(iff) 1041 ENDIF 1042 1043 1044 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 1045 CALL conf_physoutputs(var%name,var%flag) 1046 1047 IF (typeecrit=='inst(X)'.OR.typeecrit=='once') THEN 1048 zstophym=zoutm(iff) 1049 ELSE 1050 zstophym=zdtime 1051 ENDIF 1052 1053 IF(.NOT.clef_stations(iff)) THEN 1054 IF ( var%flag(iff)<=lev_files(iff) ) THEN 1055 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 1056 iim, jj_nb, nhorim(iff), klev, levmin(iff), & 1057 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, typeecrit, & 1058 zstophym, zoutm(iff)) 1059 ENDIF 1060 ELSE 1061 IF ( var%flag(iff)<=lev_files(iff)) THEN 1062 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 1063 npstn,1,nhorim(iff), klev, levmin(iff), & 1064 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, & 1065 typeecrit, zstophym,zoutm(iff)) 1066 ENDIF 1067 ENDIF 1068 END SUBROUTINE histdef3d 1069 1070 SUBROUTINE conf_physoutputs(nam_var,flag_var) 1071 !!! Lecture des noms et niveau de sortie des variables dans output.def 1072 ! en utilisant les routines getin de IOIPSL 1073 use ioipsl 1074 1075 IMPLICIT NONE 1076 1077 include 'iniprint.h' 1078 1079 CHARACTER(LEN=20) :: nam_var 1080 INTEGER, DIMENSION(nfiles) :: flag_var 1081 1082 IF(prt_level>10) WRITE(lunout,*)'Avant getin: nam_var flag_var ',nam_var,flag_var(:) 1083 CALL getin('flag_'//nam_var,flag_var) 1084 CALL getin('name_'//nam_var,nam_var) 1085 IF(prt_level>10) WRITE(lunout,*)'Apres getin: nam_var flag_var ',nam_var,flag_var(:) 1086 1087 END SUBROUTINE conf_physoutputs 487 1088 488 1089 489 SUBROUTINE convers_timesteps(str,dtime,timestep) -
LMDZ5/branches/testing/libf/phylmd/phys_output_var_mod.F90
r1795 r1864 25 25 26 26 ! ug Plein de variables venues de phys_output_mod 27 INTEGER, PARAMETER :: nfiles = 627 INTEGER, PARAMETER :: nfiles = 9 28 28 LOGICAL, DIMENSION(nfiles), SAVE :: clef_files 29 29 LOGICAL, DIMENSION(nfiles), SAVE :: clef_stations … … 41 41 CHARACTER(LEN=20), DIMENSION(nfiles), SAVE :: type_ecri_files, phys_out_filetypes 42 42 !$OMP THREADPRIVATE(type_ecri_files, phys_out_filetypes) 43 CHARACTER(LEN=20), DIMENSION(nfiles), SAVE :: phys_out_filenames 44 !$OMP THREADPRIVATE(phys_out_filenames) 43 45 44 46 ! swaero_diag : flag indicates if it is necessary to do calculation for some aerosol diagnostics … … 49 51 INTEGER, SAVE:: levmax(nfiles) 50 52 !$OMP THREADPRIVATE(levmin, levmax) 53 54 REAL, SAVE :: zdtime_moy 55 !$OMP THREADPRIVATE(zdtime_moy) 56 57 LOGICAL, SAVE :: vars_defined = .FALSE. ! ug PAS THREADPRIVATE ET C'EST NORMAL 51 58 52 59 TYPE ctrl_out -
LMDZ5/branches/testing/libf/phylmd/phys_state_var_mod.F90
r1795 r1864 68 68 REAL, ALLOCATABLE, SAVE :: zmax0(:), f0(:) ! 69 69 !$OMP THREADPRIVATE(zmax0,f0) 70 REAL, ALLOCATABLE, SAVE :: ema_work1(:,:), ema_work2(:,:)71 !$OMP THREADPRIVATE( ema_work1,ema_work2)70 REAL, ALLOCATABLE, SAVE :: sig1(:,:), w01(:,:) 71 !$OMP THREADPRIVATE(sig1,w01) 72 72 REAL, ALLOCATABLE, SAVE :: entr_therm(:,:), fm_therm(:,:) 73 73 !$OMP THREADPRIVATE(entr_therm,fm_therm) … … 332 332 REAL,SAVE,ALLOCATABLE :: newsst(:) 333 333 !$OMP THREADPRIVATE(newsst) 334 REAL,SAVE,ALLOCATABLE :: ustar(:,:),u10m(:,:), v10m(:,:) 335 !$OMP THREADPRIVATE(ustar,u10m,v10m )334 REAL,SAVE,ALLOCATABLE :: ustar(:,:),u10m(:,:), v10m(:,:),wstar(:,:) 335 !$OMP THREADPRIVATE(ustar,u10m,v10m,wstar) 336 336 ! 337 337 ! ok_ade=T -ADE=topswad-topsw … … 400 400 ALLOCATE(coefm(klon,klev+1,nbsrf+1)) 401 401 ALLOCATE(zmax0(klon), f0(klon)) 402 ALLOCATE( ema_work1(klon,klev), ema_work2(klon,klev))402 ALLOCATE(sig1(klon,klev), w01(klon,klev)) 403 403 ALLOCATE(entr_therm(klon,klev), fm_therm(klon,klev+1)) 404 404 ALLOCATE(detr_therm(klon,klev)) … … 508 508 ALLOCATE(rlonPOS(klon)) 509 509 ALLOCATE(newsst(klon)) 510 ALLOCATE(ustar(klon,nbsrf),u10m(klon,nbsrf), v10m(klon,nbsrf) )510 ALLOCATE(ustar(klon,nbsrf),u10m(klon,nbsrf), v10m(klon,nbsrf),wstar(klon,nbsrf+1)) 511 511 ALLOCATE(topswad(klon), solswad(klon)) 512 512 ALLOCATE(topswai(klon), solswai(klon)) … … 536 536 deallocate(ratqs, pbl_tke,coefh,coefm) 537 537 deallocate(zmax0, f0) 538 deallocate( ema_work1, ema_work2)538 deallocate(sig1, w01) 539 539 deallocate(entr_therm, fm_therm) 540 540 deallocate(detr_therm) … … 619 619 deallocate(rlonPOS) 620 620 deallocate(newsst) 621 deallocate(ustar,u10m, v10m )621 deallocate(ustar,u10m, v10m,wstar) 622 622 deallocate(topswad, solswad) 623 623 deallocate(topswai, solswai) -
LMDZ5/branches/testing/libf/phylmd/physiq.F
r1795 r1864 29 29 USE phys_state_var_mod ! Variables sauvegardees de la physique 30 30 USE phys_output_var_mod ! Variables pour les ecritures des sorties 31 USE phys_output_write_mod 31 32 USE fonte_neige_mod, ONLY : fonte_neige_get_vars 32 33 USE phys_output_mod … … 44 45 use conf_phys_m, only: conf_phys 45 46 use radlwsw_m, only: radlwsw 47 use phyaqua_mod, only: zenang_an 46 48 USE control_mod 47 49 #ifdef REPROBUS … … 49 51 #endif 50 52 USE indice_sol_mod 53 USE phytrac_mod, ONLY : phytrac 51 54 52 55 !IM stations CFMIP … … 173 176 PARAMETER (ok_region=.FALSE.) 174 177 c====================================================================== 175 real weak_inversion(klon),dthmin(klon)176 178 real seuil_inversion 177 179 save seuil_inversion … … 184 186 REAL zz,znum,zden 185 187 REAL wmax_th(klon) 186 REAL zmax_th(klon)187 188 REAL tau_overturning_th(klon) 188 189 … … 220 221 REAL u(klon,klev) 221 222 REAL v(klon,klev) 222 REAL t(klon,klev),theta (klon,klev),thetal(klon,klev)223 REAL t(klon,klev),thetal(klon,klev) 223 224 c thetal: ligne suivante a decommenter si vous avez les fichiers MPL 20130625 224 225 c fth_fonctions.F90 et parkind1.F90 … … 227 228 REAL qx(klon,klev,nqtot) 228 229 REAL flxmass_w(klon,klev) 229 REAL omega(klon,klev) ! vitesse verticale en Pa/s230 230 REAL d_u(klon,klev) 231 231 REAL d_v(klon,klev) … … 242 242 real clw(klon,klev),elij(klon,klev,klev) 243 243 real epmlmMm(klon,klev,klev),eplaMm(klon,klev) 244 real wdtrainA(klon,klev),wdtrainM(klon,klev)245 244 ! RomP <<< 246 245 !IM definition dynamique o_trac dans phys_output_open … … 281 280 c 282 281 c 283 c prw: precipitable water284 real prw(klon)285 282 286 283 REAL convliq(klon,klev) ! eau liquide nuageuse convective … … 295 292 c flwp, fiwp = Liquid Water Path & Ice Water Path (kg/m2) 296 293 c flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg) 297 REAL flwp(klon), fiwp(klon)298 REAL flwc(klon,klev), fiwc(klon,klev)299 294 REAL flwp_c(klon), fiwp_c(klon) 300 295 REAL flwc_c(klon,klev), fiwc_c(klon,klev) … … 302 297 REAL flwc_s(klon,klev), fiwc_s(klon,klev) 303 298 304 REAL evap_pot(klon,nbsrf)305 299 306 300 cIM ISCCP simulator v3.4 … … 528 522 c$OMP THREADPRIVATE(itap) 529 523 c 530 real slp(klon) ! sea level pressure531 c532 REAL fevap(klon,nbsrf)533 REAL fluxlat(klon,nbsrf)534 c535 REAL qsol(klon)536 524 REAL,save :: solarlong0 537 525 c$OMP THREADPRIVATE(solarlong0) … … 544 532 c 545 533 INTEGER igwd,idx(klon),itest(klon) 546 c547 REAL agesno(klon,nbsrf)548 534 c 549 535 c REAL,allocatable,save :: run_off_lic_0(:) … … 565 551 566 552 REAL mip(klon,klev) ! mass flux shed by the adiab ascent at each level 567 REAL Vprecip(klon,klev+1) ! precipitation vertical profile568 553 c 569 554 REAL wape_prescr, fip_prescr … … 589 574 c$OMP THREADPRIVATE(wake_s_min_lsp) 590 575 591 real ale_wake(klon)592 real alp_wake(klon)593 576 594 577 real ok_wk_lsp(klon) … … 609 592 REAL wake_dtPBL(klon,klev) ! Wake : differential heating (wake - unpertubed) PBL 610 593 REAL wake_dqPBL(klon,klev) ! Wake : differential moistening (wake - unpertubed) PBL 611 REAL wake_omg(klon,klev) ! Wake : velocity difference (wake - unpertubed)612 594 REAL wake_ddeltat(klon,klev),wake_ddeltaq(klon,klev) 613 595 REAL wake_dp_deltomg(klon,klev) ! Wake : gradient vertical de wake_omg … … 615 597 c 616 598 cpourquoi y'a pas de save?? 617 REAL wake_h(klon) ! Wake : hauteur de la poche froide618 599 c 619 600 INTEGER wake_k(klon) ! Wake sommet … … 645 626 cRR:fin declarations poches froides 646 627 c======================================================================================================= 647 648 REAL zw2(klon,klev+1) 649 REAL fraca(klon,klev+1) 628 650 629 REAL ztv(klon,klev),ztva(klon,klev) 651 630 REAL zpspsk(klon,klev) … … 665 644 real env_tke_max0(klon) ! TKE dans l'environnement au LCL 666 645 667 c---Spectre de thermiques de type 2 au LCL668 real n2(klon),s2(klon)669 real ale_bl_stat(klon)670 671 646 c---D\'eclenchement stochastique 672 647 integer :: tau_trig(klon) 673 real proba_notrig(klon)674 real random_notrig(klon)675 648 676 649 c--------Statistical Boundary Layer Closure: ALP_BL-------- … … 680 653 real env_tke_max(klon,klev) ! Profil de TKE dans l'environnement 681 654 682 c---Fermeture statistique683 real alp_bl_det(klon) ! ALP d\'terministe du thermique unique684 real alp_bl_fluct_m(klon) ! ALP li\'ee aux fluctuations de flux de masse sous-nuageux685 real alp_bl_fluct_tke(klon) ! ALP li\'ee aux fluctuations d'\'energie cin\'etique sous-nuageuse686 real alp_bl_conv(klon) ! ALP li\'ee \`a grande \'echelle687 real alp_bl_stat(klon) ! ALP totale688 655 689 656 ccc fin nrlmd le 10/04/2012 … … 697 664 c Variables locales: 698 665 c 699 REAL cdragh(klon) ! drag coefficient pour T and Q700 REAL cdragm(klon) ! drag coefficient pour vent701 666 cAA 702 667 cAA Pour phytrac 703 668 REAL u1(klon) ! vents dans la premiere couche U 704 669 REAL v1(klon) ! vents dans la premiere couche V 705 706 REAL zxffonte(klon), zxfqcalving(klon),zxfqfonte(klon)707 670 708 671 c@$$ LOGICAL offline ! Controle du stockage ds "physique" … … 713 676 ! RomP >>> 714 677 REAL beta_prec_fisrt(klon,klev) ! taux de conv de l'eau cond (fisrt) 715 REAL beta_prec(klon,klev) ! taux de conv de l'eau cond (utilise)716 678 ! RomP <<< 717 679 INTEGER :: iii … … 722 684 c 723 685 cIM 050204 END 724 REAL evap(klon), devap(klon) ! evaporation et sa derivee 725 REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee 726 727 REAL bils(klon) ! bilan de chaleur au sol 728 729 REAL wfbilo(klon,nbsrf) ! bilan d'eau, pour chaque 730 C ! type de sous-surface et pondere par la fraction 731 REAL wfbils(klon,nbsrf) ! bilan de chaleur au sol, pour chaque 732 C ! type de sous-surface et pondere par la fraction 733 REAL slab_wfbils(klon) ! bilan de chaleur au sol pour le cas de slab, sur les points d'ocean 734 735 REAL fder(klon) 736 REAL ve(klon) ! integr. verticale du transport meri. de l'energie 737 REAL vq(klon) ! integr. verticale du transport meri. de l'eau 738 REAL ue(klon) ! integr. verticale du transport zonal de l'energie 739 REAL uq(klon) ! integr. verticale du transport zonal de l'eau 740 c 741 REAL frugs(klon,nbsrf) 742 REAL zxrugs(klon) ! longueur de rugosite 686 REAL devap(klon) ! evaporation et sa derivee 687 REAL dsens(klon) ! chaleur sensible et sa derivee 688 743 689 c 744 690 c Conditions aux limites … … 804 750 REAL diafra(klon,klev) ! fraction nuageuse 805 751 REAL cldliq(klon,klev) ! eau liquide nuageuse 806 REAL cldfra(klon,klev) ! fraction nuageuse807 REAL cldtau(klon,klev) ! epaisseur optique808 REAL cldemi(klon,klev) ! emissivite infrarouge809 752 c 810 753 CXXX PB 811 754 REAL fluxq(klon,klev, nbsrf) ! flux turbulent d'humidite 812 REAL fluxt(klon,klev, nbsrf) ! flux turbulent de chaleur813 REAL fluxu(klon,klev, nbsrf) ! flux turbulent de vitesse u814 REAL fluxv(klon,klev, nbsrf) ! flux turbulent de vitesse v815 755 c 816 756 REAL zxfluxt(klon, klev) … … 818 758 REAL zxfluxu(klon, klev) 819 759 REAL zxfluxv(klon, klev) 820 CXXX 821 c 822 REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous surface 823 REAL fsolsw(klon, nbsrf) ! flux solaire absorb. pour chaque sous surface 760 824 761 c Le rayonnement n'est pas calcule tous les pas, il faut donc 825 762 c sauvegarder les sorties du rayonnement … … 834 771 REAL conv_q(klon,klev) ! convergence de l'humidite (kg/kg/s) 835 772 REAL conv_t(klon,klev) ! convergence de la temperature(K/s) 836 c 837 REAL cldl(klon),cldm(klon),cldh(klon) !nuages bas, moyen et haut 838 REAL cldt(klon),cldq(klon) !nuage total, eau liquide integree 839 c 840 REAL zxtsol(klon), zxqsurf(klon), zxsnow(klon), zxfluxlat(klon) 773 774 c 775 REAL zxsnow(klon) 841 776 REAL zxsnow_dummy(klon) 842 777 c … … 857 792 REAL t_coup 858 793 PARAMETER (t_coup=234.0) 859 c 860 REAL zphi(klon,klev) 794 861 795 cym A voir plus tard !! 862 796 cym REAL zx_relief(iim,jjmp1) … … 864 798 c 865 799 c Grandeurs de sorties 866 REAL s_ pblh(klon), s_lcl(klon), s_capCL(klon)867 REAL s_oliqCL(klon), s_cteiCL(klon) , s_pblt(klon)868 REAL s_t herm(klon), s_trmb1(klon), s_trmb2(klon)800 REAL s_capCL(klon) 801 REAL s_oliqCL(klon), s_cteiCL(klon) 802 REAL s_trmb1(klon), s_trmb2(klon) 869 803 REAL s_trmb3(klon) 870 804 cKE43 871 805 c Variables locales pour la convection de K. Emanuel (sb): 872 c 873 REAL upwd(klon,klev) ! saturated updraft mass flux 874 REAL dnwd(klon,klev) ! saturated downdraft mass flux 875 REAL dnwd0(klon,klev) ! unsaturated downdraft mass flux 806 876 807 REAL tvp(klon,klev) ! virtual temp of lifted parcel 877 REAL plcl(klon) ! Lifting Condensation Level878 REAL plfc(klon) ! Level of Free Convection879 REAL wbeff(klon) ! saturated updraft velocity at LFC880 808 CHARACTER*40 capemaxcels !max(CAPE) 881 809 … … 902 830 c eva: evaporation de l'eau liquide nuageuse 903 831 c vdf: couche limite (Vertical DiFfusion) 904 REAL rneb(klon,klev)905 832 906 833 ! tendance nulles … … 914 841 cIM 081204 END 915 842 c 916 REAL pmfu(klon,klev), pmfd(klon,klev)917 843 REAL pen_u(klon,klev), pen_d(klon,klev) 918 844 REAL pde_u(klon,klev), pde_d(klon,klev) 919 845 INTEGER kcbot(klon), kctop(klon), kdtop(klon) 920 REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1)921 REAL prfl(klon,klev+1), psfl(klon,klev+1)922 c923 REAL rain_lsc(klon)924 REAL snow_lsc(klon)925 846 c 926 847 REAL ratqsc(klon,klev) … … 935 856 logical ok_newmicro 936 857 save ok_newmicro 937 real ref_liq(klon,klev), ref_ice(klon,klev)938 858 c$OMP THREADPRIVATE(ok_newmicro) 939 859 save fact_cldcon,facttemps … … 973 893 c Variables locales pour effectuer les appels en serie 974 894 c 975 REAL zx_rh(klon,klev)976 895 cIM RH a 2m (la surface) 977 REAL rh2m(klon), qsat2m(klon)978 REAL tpot(klon), tpote(klon)979 896 REAL Lheat 980 897 … … 1091 1008 REAL ZRCPD 1092 1009 c-jld ec_conser 1093 REAL t2m(klon,nbsrf) ! temperature a 2m1094 1010 REAL q2m(klon,nbsrf) ! humidite a 2m 1095 1011 1096 1012 cIM: t2m, q2m, ustar, u10m, v10m et t2mincels, t2maxcels 1097 REAL zt2m(klon), zq2m(klon) !temp., hum. 2m moyenne s/ 1 maille1098 REAL zustar(klon),zu10m(klon), zv10m(klon) ! u* et vents a 10m moyennes s/1 maille1099 1013 CHARACTER*40 t2mincels, t2maxcels !t2m min., t2m max 1100 1014 CHARACTER*40 tinst, tave, typeval 1101 1015 REAL cldtaupi(klon,klev) ! Cloud optical thickness for pre-industrial (pi) aerosols 1102 1016 1103 REAL re(klon, klev) ! Cloud droplet effective radius1104 REAL fl(klon, klev) ! denominator of re1105 1017 1106 1018 REAL re_top(klon), fl_top(klon) ! CDR at top of liquid water clouds … … 1228 1140 ! Utilise notamment en 1D mais peut etre active egalement en 3D 1229 1141 ! en imposant la valeur de igout. 1230 c====================================================================== 1231 1142 c======================================================================d 1232 1143 if (prt_level.ge.1) then 1233 1144 igout=klon/2+1/klon … … 1250 1161 1251 1162 c====================================================================== 1252 1253 cym => necessaire pour iflag_con != 21254 pmfd(:,:) = 0.1255 pen_u(:,:) = 0.1256 pen_d(:,:) = 0.1257 pde_d(:,:) = 0.1258 pde_u(:,:) = 0.1259 aam=0.1260 1261 torsfc=0.1262 forall (k=1: llm) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg1263 1163 1264 1164 if (first) then … … 1301 1201 1302 1202 endif ! first 1203 1204 cym => necessaire pour iflag_con != 2 1205 pmfd(:,:) = 0. 1206 pen_u(:,:) = 0. 1207 pen_d(:,:) = 0. 1208 pde_d(:,:) = 0. 1209 pde_u(:,:) = 0. 1210 aam=0. 1211 1212 torsfc=0. 1213 forall (k=1: llm) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg 1214 1215 1303 1216 1304 1217 modname = 'physiq' … … 1600 1513 call phys_output_open(rlon,rlat,nCFMIP,tabijGCM, 1601 1514 & iGCM,jGCM,lonGCM,latGCM, 1602 & jjmp1,nlevSTD,clevSTD, 1515 & jjmp1,nlevSTD,clevSTD,rlevSTD, 1603 1516 & nbteta, ctetaSTD, dtime,ok_veget, 1604 1517 & type_ocean,iflag_pbl,ok_mensuel,ok_journe, … … 1606 1519 & read_climoz, phys_out_filestations, 1607 1520 & new_aod, aerosol_couple, 1608 & flag_aerosol_strat ) 1521 & flag_aerosol_strat, pdtphys, paprs, pphis, 1522 & pplay, lmax_th, ptconv, ptconvth, ivap, 1523 & d_t, qx, d_qx, zmasse, ok_sync) 1609 1524 c$OMP END MASTER 1610 1525 c$OMP BARRIER 1611 1526 1527 #undef histISCCP 1612 1528 #ifdef histISCCP 1613 1529 #include "ini_histISCCP.h" 1614 #endif1615 1616 #ifdef histNMC1617 #include "ini_histhfNMC.h"1618 #include "ini_histdayNMC.h"1619 #include "ini_histmthNMC.h"1620 1530 #endif 1621 1531 … … 1969 1879 DO i = 1, klon 1970 1880 zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*q_seri(i,k)) 1971 c zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*q_seri(i,k)) 1972 zlsdcp=RLVTT/RCPD/(1.0+RVTMP2*q_seri(i,k)) 1881 cjyg< 1882 c Attention : Arnaud a propose des formules completement differentes 1883 c A verifier !!! 1884 zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*q_seri(i,k)) 1885 IF (iflag_ice_thermo .EQ. 0) THEN 1886 zlsdcp=zlvdcp 1887 ENDIF 1888 c>jyg 1889 1973 1890 zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k))) 1974 1891 zb = MAX(0.0,ql_seri(i,k)) … … 2083 2000 e t_seri, q_seri, u_seri, v_seri, 2084 2001 e pplay, paprs, pctsrf, 2085 + ftsol, falb1, falb2, ustar, u10m, v10m,2002 + ftsol,falb1,falb2,ustar,u10m,v10m,wstar, 2086 2003 s sollwdown, cdragh, cdragm, u1, v1, 2087 2004 s albsol1, albsol2, sens, evap, … … 2354 2271 nbtr_tmp=nbtr 2355 2272 END IF 2356 CALL concvl (iflag_con,iflag_clos, 2273 cjyg iflag_con est dans clesphys 2274 cc CALL concvl (iflag_con,iflag_clos, 2275 CALL concvl (iflag_clos, 2357 2276 . dtime,paprs,pplay,t_undi,q_undi, 2358 2277 . t_wake,q_wake,wake_s, 2359 2278 . u_seri,v_seri,tr_seri,nbtr_tmp, 2360 2279 . ALE,ALP, 2361 . ema_work1,ema_work2,2280 . sig1,w01, 2362 2281 . d_t_con,d_q_con,d_u_con,d_v_con,d_tr, 2363 2282 . rain_con, snow_con, ibas_con, itop_con, sigd, … … 2392 2311 . paprs,pplay,t_seri,q_seri, 2393 2312 . u_seri,v_seri,tr_seri,ntra, 2394 . ema_work1,ema_work2,2313 . sig1,w01, 2395 2314 . d_t_con,d_q_con,d_u_con,d_v_con,d_tr, 2396 2315 . rain_con, snow_con, ibas_con, itop_con, … … 2856 2775 . frac_impa, frac_nucl, beta_prec_fisrt, 2857 2776 . prfl, psfl, rhcl, 2858 . zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cldcon ) 2777 . zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cldcon, 2778 . iflag_ice_thermo) 2859 2779 2860 2780 WHERE (rain_lsc < 0) rain_lsc = 0. … … 3729 3649 I paprs, pplay, pmfu, pmfd, 3730 3650 I pen_u, pde_u, pen_d, pde_d, 3731 I cdragh, coefh(:,:,is_ave), 3651 I cdragh, coefh(:,:,is_ave), fm_therm, entr_therm, 3732 3652 I u1, v1, ftsol, pctsrf, 3733 I ustar, u10m, v10m, 3653 I zustar, zu10m, zv10m, 3654 I wstar(:,is_ave), ale_bl, ale_wake, 3734 3655 I rlat, rlon, 3735 3656 I frac_impa,frac_nucl, beta_prec_fisrt,beta_prec, … … 4031 3952 endif 4032 3953 4033 #include "phys_output_write_new.h" 3954 3955 !On effectue les sorties: 3956 3957 CALL phys_output_write(itap, pdtphys, paprs, pphis, & 3958 & pplay, lmax_th, aerosol_couple, & 3959 & ok_ade, ok_aie, ivap, new_aod, ok_sync, & 3960 & ptconv, read_climoz, clevSTD, freq_moyNMC, & 3961 & ptconvth, d_t, qx, d_qx, zmasse, & 3962 & flag_aerosol_strat) 4034 3963 4035 3964 … … 4038 3967 #ifdef histISCCP 4039 3968 #include "write_histISCCP.h" 4040 #endif4041 4042 #ifdef histNMC4043 #include "write_histhfNMC.h"4044 #include "write_histdayNMC.h"4045 #include "write_histmthNMC.h"4046 3969 #endif 4047 3970 -
LMDZ5/branches/testing/libf/phylmd/radlwsw_m.F90
r1795 r1864 334 334 !===== iflag_rrtm ================================================ 335 335 ! 336 print*,'iflag_rrtm = ', iflag_rrtm 336 337 IF (iflag_rrtm == 0) THEN 337 338 ! Old radiation scheme, used for AR4 runs -
LMDZ5/branches/testing/libf/phylmd/readaerosolstrato.F90
r1795 r1864 33 33 integer i, k, band, wave 34 34 integer, save :: mth_pre 35 !$OMP THREADPRIVATE(mth_pre) 35 36 36 37 real, allocatable, dimension(:,:), save :: tau_aer_strat … … 41 42 real, allocatable:: tauaerstrat_mois(:, :, :) 42 43 real, allocatable:: tauaerstrat_mois_glo(:, :) 43 real, allocatable:: tauaerstrat_mois_glo_bands(:,:,:)44 44 45 45 ! For NetCDF: … … 61 61 IF (.not.ALLOCATED(tau_aer_strat)) ALLOCATE(tau_aer_strat(klon,klev)) 62 62 63 !--only read file if beginning of run or start of new month 64 IF (debut.OR.mth_cur.NE.mth_pre) THEN 65 63 66 IF (is_mpi_root) THEN 64 65 IF (debut.OR.mth_cur.NE.mth_pre) THEN66 67 67 68 IF (nbands.NE.2) THEN … … 107 108 ENDIF 108 109 109 ALLOCATE(tauaerstrat(n_lon, n_lat, n_lev, n_month)) 110 ALLOCATE(tauaerstrat_mois(n_lon, n_lat, n_lev)) 111 ALLOCATE(tauaerstrat_mois_glo(klon_glo, n_lev)) 112 ALLOCATE(tauaerstrat_mois_glo_bands(klon_glo, n_lev,nbands)) 110 IF (.not.ALLOCATED(tauaerstrat)) ALLOCATE(tauaerstrat(n_lon, n_lat, n_lev, n_month)) 111 IF (.not.ALLOCATED(tauaerstrat_mois)) ALLOCATE(tauaerstrat_mois(n_lon, n_lat, n_lev)) 112 IF (.not.ALLOCATED(tauaerstrat_mois_glo)) ALLOCATE(tauaerstrat_mois_glo(klon_glo, n_lev)) 113 113 114 114 !--reading stratospheric AOD at 550 nm … … 128 128 CALL grid2dTo1d_glo(tauaerstrat_mois,tauaerstrat_mois_glo) 129 129 130 ! DEALLOCATE(tauaerstrat) 131 ! DEALLOCATE(tauaerstrat_mois) 132 ! DEALLOCATE(tauaerstrat_mois_glo) 133 134 ENDIF !--is_mpi_root 135 130 136 !--scatter on all proc 131 137 CALL scatter(tauaerstrat_mois_glo,tau_aer_strat) 132 138 133 DEALLOCATE(tauaerstrat) 134 DEALLOCATE(tauaerstrat_mois) 135 DEALLOCATE(tauaerstrat_mois_glo) 136 139 !--keep memory of previous month 137 140 mth_pre=mth_cur 138 141 139 142 ENDIF !--debut ou nouveau mois 140 143 141 ENDIF !--is_mpi_root142 143 144 !--total vertical aod at the 5 wavelengths 144 145 DO wave=1, nwave 145 146 DO k=1, klev 146 tausum_aero(:,wave,id_strat)=tausum_aero(:,wave,id_strat)+tau_aer_strat(:,k)*alpha_strat_wave(wave)/alpha_strat_wave(2) 147 tausum_aero(:,wave,id_STRAT)=tausum_aero(:,wave,id_STRAT)+tau_aer_strat(:,k)*alpha_strat_wave(wave)/alpha_strat_wave(2) 148 ! tausum_aero(:,wave,id_ASBCM)=tausum_aero(:,wave,id_ASBCM)+tau_aer_strat(:,k)*alpha_strat_wave(wave)/alpha_strat_wave(2) 147 149 ENDDO 148 150 ENDDO -
LMDZ5/branches/testing/libf/phylmd/traclmdz_mod.F90
r1795 r1864 337 337 SUBROUTINE traclmdz(nstep, julien, gmtime, pdtphys, t_seri, paprs, pplay, & 338 338 cdragh, coefh, yu1, yv1, ftsol, pctsrf, xlat, xlon, couchelimite, sh, & 339 rh, pphi, ustar, zu10m, zv10m, &339 rh, pphi, ustar, wstar, ale_bl, ale_wake, zu10m, zv10m, & 340 340 !! tr_seri, source, solsym, d_tr_cl, zmasse) !RomP 341 341 tr_seri, source, solsym, d_tr_cl,d_tr_dec, zmasse) !RomP … … 385 385 REAL,DIMENSION(klon,klev),INTENT(IN) :: pphi ! geopotentie 386 386 REAL,DIMENSION(klon),INTENT(IN) :: ustar ! ustar (m/s) 387 REAL,DIMENSION(klon),INTENT(IN) :: wstar,ale_bl,ale_wake ! wstar (m/s) and Avail. Lifti. Energ. 387 388 REAL,DIMENSION(klon),INTENT(IN) :: zu10m ! vent zonal 10m (m/s) 388 389 REAL,DIMENSION(klon),INTENT(IN) :: zv10m ! vent zonal 10m (m/s) -
LMDZ5/branches/testing/libf/phylmd/write_histrac.h
r1750 r1864 45 45 46 46 ! TD COUCHE-LIMITE 47 IF ( couchelimite) THEN47 IF (iflag_vdf_trac>=0) THEN 48 48 CALL histwrite_phy(nid_tra,.FALSE.,"d_tr_cl_"//tname(iiq),itau_w,d_tr_cl(:,:,it)) 49 49 CALL histwrite_phy(nid_tra,.FALSE.,"d_tr_dry_"//tname(iiq),itau_w,d_tr_dry(:,it)) -
LMDZ5/branches/testing/makegcm
r1707 r1864 23 23 set OPTIMI='-C debug -eC ' 24 24 set OPTIMI=' -ftrace ' 25 set OPT_LINUX="- i4 -O3 -r8 -DNC_DOUBLE"26 set OPT_LINUX="- i4 -O3 -r8 -DNC_DOUBLE"25 set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE" 26 set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE" 27 27 set io=ioipsl 28 28 set cosp=false 29 29 30 set FC_LINUX=g 9531 set FC_LINUX=g 9532 #set FC_LINUX=g 9533 if ( $FC_LINUX == g 95) then34 set OPT_LINUX="- i4 -O3 -r8 -DNC_DOUBLE"30 set FC_LINUX=gfortran 31 set FC_LINUX=gfortran 32 #set FC_LINUX=gfortran 33 if ( $FC_LINUX == gfortran ) then 34 set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE" 35 35 else if ( $FC_LINUX == gfortran ) then 36 set OPT_LINUX="- i4 -O3 -r8 -DNC_DOUBLE"37 # set OPT_LINUX="- i4 -O3 -r8 -DNC_DOUBLE"38 set OPT_LINUX="- i4 -O3 -r8 -DNC_DOUBLE"36 set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE" 37 # set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE" 38 set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE" 39 39 else 40 40 # pgf90 options 41 set OPT_LINUX="- i4 -O3 -r8 -DNC_DOUBLE"41 set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE" 42 42 endif 43 43 … … 54 54 setenv IOIPSLDIR /tmpdir/fairhead/Aqua/LMDZ20120327.trunk/modipsl/lib 55 55 setenv MODIPSLDIR /tmpdir/fairhead/Aqua/LMDZ20120327.trunk/modipsl/lib 56 setenv NCDFINC /tmpdir/fairhead/ Aqua/LMDZ20120327.trunk/netcdf-4.0.1/include57 setenv NCDFLIB /tmpdir/fairhead/ Aqua/LMDZ20120327.trunk/netcdf-4.0.1/lib56 setenv NCDFINC /tmpdir/fairhead/Test_HEAD/LMDZ20130808.trunk/netcdf-4.0.1/include 57 setenv NCDFLIB /tmpdir/fairhead/Test_HEAD/LMDZ20130808.trunk/netcdf-4.0.1/lib 58 58 59 59 … … 107 107 if ( ! $?NCDFLIB ) then 108 108 echo You must initialize the variable NCDFLIB in your environnement 109 echo for instance: "setenv NCDFLIB / d3/idelkadi/MODELE_LMDZ/LMDZ20121005.trunk/netcdf-4.0.1/lib109 echo for instance: "setenv NCDFLIB /tmpdir/fairhead/Test_HEAD/LMDZ20130808.trunk/netcdf-4.0.1/lib 110 110 exit 111 111 endif 112 112 if ( ! $?NCDFINC ) then 113 113 echo You must initialize the variable NCDFINC in your environnement 114 echo for instance: "setenv NCDFINC / d3/idelkadi/MODELE_LMDZ/LMDZ20121005.trunk/netcdf-4.0.1/include114 echo for instance: "setenv NCDFINC /tmpdir/fairhead/Test_HEAD/LMDZ20130808.trunk/netcdf-4.0.1/include 115 115 exit 116 116 endif … … 262 262 else if $LINUX then 263 263 ################# 264 if ( $FC_LINUX == pgf90 || $FC_LINUX == g 95|| $FC_LINUX == gfortran ) then264 if ( $FC_LINUX == pgf90 || $FC_LINUX == gfortran || $FC_LINUX == gfortran ) then 265 265 set optim=" $OPT_LINUX " 266 266 set optim90=" $OPT_LINUX " … … 519 519 set optim90="$optim90"" -g -ffpe-trap=invalid,zero,overflow -fbounds-check -Wall " 520 520 set optimtru90="$optimtru90"" -ffpe-trap=invalid,zero,overflow -g -fbounds-check -Wall " 521 else if ( $FC_LINUX == 'g 95' ) then521 else if ( $FC_LINUX == 'gfortran' ) then 522 522 set optim="$optim"" -g -fbounds-check -freal=nan -ftrace=full -Wall " 523 523 set optim90="$optim90"" -g -fbounds-check -freal=nan -ftrace=full -Wall " … … 581 581 set cppflags="$cppflags -DCPP_VEGET" 582 582 # set link_veget=" -lsechiba -lparameters -lstomate " 583 set link_veget=" -lsechiba -lparameters -lstomate "583 set link_veget=" -lsechiba -lparameters -lstomate -lparallel -lorglob -lorchidee" 584 584 if ( $XNEC || $X8BRODIE || $X6NEC) then 585 585 # set link_veget=" -lsxsechiba -lsxparameters -lsxstomate -lsxorglob -lsxparallel" … … 841 841 set opt_link="$opt_link -L$MODIPSLDIR $link_veget -L$NCDFLIB -lnetcdf " 842 842 endif 843 else if ($FC_LINUX == 'g 95' || $FC_LINUX == 'gfortran' ) then843 else if ($FC_LINUX == 'gfortran' || $FC_LINUX == 'gfortran' ) then 844 844 if ( $io == "ioipsl" ) then 845 set opt_link="$opt_link -L$MODIPSLDIR $link_veget -lioipsl -L$NCDFLIB -lnetcdff -lnetcdf -lioipsl -lnetcdff-lnetcdf "845 set opt_link="$opt_link -L$MODIPSLDIR $link_veget -lioipsl -L$NCDFLIB -lnetcdf -lioipsl -lnetcdf " 846 846 else 847 set opt_link="$opt_link -L$MODIPSLDIR $link_veget -lioipsl -L$NCDFLIB -lnetcdff-lnetcdf "847 set opt_link="$opt_link -L$MODIPSLDIR $link_veget -lioipsl -L$NCDFLIB -lnetcdf " 848 848 endif 849 849 endif … … 1015 1015 set optimtru90=" $optimtru90 -module $libo " 1016 1016 set optim90=" $optim90 -module $libo " 1017 else if ( $FC_LINUX == 'g 95' ) then1018 set optimtru90=" $optimtru90 - fmod=$libo "1019 set optim90=" $optim90 - fmod=$libo "1017 else if ( $FC_LINUX == 'gfortran' ) then 1018 set optimtru90=" $optimtru90 -I$libo " 1019 set optim90=" $optim90 -I$libo " 1020 1020 else if ( $FC_LINUX == 'gfortran' ) then 1021 1021 set optimtru90=" $optimtru90 -M $libo " -
LMDZ5/branches/testing/makelmdz
r1795 r1864 306 306 FLAG_PARA='' 307 307 else 308 FLAG_PARA=" par"308 FLAG_PARA="$paramem" 309 309 fi 310 310 … … 351 351 fi 352 352 353 if [[ "$veget" == "orchidee2.0" ]] 354 then 355 # orchidee2.0 : 356 # Compile with ORCHIDEE 2.0 (or more recent) 353 354 #============================================================================== 355 if [ "$veget" = "true" -o "$veget" = "orchidee1.9" -o "$veget" = "orchidee2.0" ] 356 then 357 358 INCLUDE="${INCLUDE} -I${ORCH_INCDIR}" 357 359 CPP_KEY="$CPP_KEY CPP_VEGET" 358 INCLUDE="${INCLUDE} -I${ORCH_INCDIR}" 359 LIB="${LIB} -L${ORCH_LIBDIR} -l${LIBPREFIX}orchidee " 360 elif [[ "$veget" == "orchidee1.9" ]] 361 then 362 # orchidee1.9 : 363 # Compile with ORCHIDEE version up to the inclusion of OpenMP in ORCHIDEE : tag 1.9-1.9.5(version AR5)-1.9.6 364 CPP_KEY="$CPP_KEY CPP_VEGET ORCHIDEE_NOOPENMP" 365 INCLUDE="${INCLUDE} -I${ORCH_INCDIR}" 366 LIB="${LIB} -L${ORCH_LIBDIR} -l${LIBPREFIX}sechiba -l${LIBPREFIX}parameters -l${LIBPREFIX}stomate -l${LIBPREFIX}parallel -l${LIBPREFIX}orglob" 367 elif [[ "$veget" == "true" ]] 368 then 369 # true : 370 # Obsolete, for backward compatibility. To be used with ORCHIDEE tag 1.9-1.9.6 371 # For this case, cpp flag ORCHIDEE_NOOPENMP must be added to the makelmdz_fcm arguments 372 CPP_KEY="$CPP_KEY CPP_VEGET" 373 INCLUDE="${INCLUDE} -I${ORCH_INCDIR}" 374 LIB="${LIB} -L${ORCH_LIBDIR} -l${LIBPREFIX}sechiba -l${LIBPREFIX}parameters -l${LIBPREFIX}stomate -l${LIBPREFIX}parallel -l${LIBPREFIX}orglob" 375 elif [[ "$veget" != "false" ]] 376 then 360 # temporary, for Orchidee versions 1.9.* (before openmp activation) 361 if [[ "$veget" == "orchidee1.9" ]] ; then 362 CPP_KEY="$CPP_KEY ORCHIDEE_NOOPENMP" 363 fi 364 if [[ "$veget" == "orchidee2.0" ]] ; then 365 orch_libs="sechiba parameters stomate parallel orglob orchidee" 366 else 367 orch_libs="sechiba parameters stomate parallel orglob" 368 fi 369 LIB="${LIB} -L${ORCH_LIBDIR}" 370 for lib in ${orch_libs} ; do 371 if [ -f ${ORCH_LIBDIR}/lib${LIBPREFIX}$lib.a ] ; then 372 LIB="${LIB} -l${LIBPREFIX}$lib " 373 fi 374 done 375 elif [[ "$veget" != "false" ]] ; then 377 376 echo "Option -v $veget does not exist" 378 377 echo "Use ./makelmdz -h for more information" … … 380 379 fi 381 380 381 #=============================================================================== 382 382 if [[ $io == ioipsl ]] 383 383 then … … 453 453 ######################################################################## 454 454 455 dimension=`echo $dim | wc -w` 456 echo dimension $dimension 457 458 if (( $dimension == 3 )) 459 then 460 cd $LIBFGCM/grid 461 \rm fxyprim.h 462 cp -p fxy_${grille}.h fxyprim.h 455 if (( $dimc == 3 )) ; then 456 cd $LIBFGCM/grid 457 \rm fxyprim.h 458 cp -p fxy_${grille}.h fxyprim.h 459 filtre="FILTRE=$filtre" 460 INCLUDE="$INCLUDE "'-I$(LIBF)/dyn3d${FLAG_PARA} ' 461 elif (( $dimc == 2 )) ; then 462 filtre="FILTRE= L_FILTRE= " 463 INCLUDE="$INCLUDE "'-I$(LIBF)/dyn2d' 464 elif (( $dimc == 1 )) ; then 465 filtre="L_DYN= DYN= FILTRE= L_FILTRE= DIRMAIN=phy$physique " 466 INCLUDE="$INCLUDE "'-I$(LIBF)/dyn3d' # Pas tres propre 463 467 else 464 echo "Probleme dans les dimensions de la dynamique !!" 465 echo "Non reactive pour l'instant !!!" 466 fi 467 468 ###################################################################### 469 # Gestion du filtre qui n'existe qu'en 3d. 470 ###################################################################### 471 472 if (( `expr $dimc \> 2` == 1 )) 473 then 474 filtre="FILTRE=$filtre" 475 else 476 filtre="FILTRE= L_FILTRE= " 477 fi 478 echo MACRO FILTRE $filtre 479 480 echo $dimc 468 echo Dimension dimc=$dimc pas prevu ; exit 469 fi 481 470 482 471 ###################################################################### 483 472 # Creation du suffixe de la configuration 484 473 ###################################################################### 485 486 474 487 475 SUFF_NAME=_${dim_full} … … 531 519 ######################################################################## 532 520 cd $LMDGCM 521 533 522 find libf -name '*.[Fh]' -print > tmp77 534 523 find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print > tmp90 … … 560 549 561 550 # library directory name: 562 if [[ "$parallel" == "none" ]] 563 then 564 nomlib=${arch}_${physique}_${dim_full}_${grille}_${compil_mod} 565 else 566 nomlib=${arch}_${physique}_${dim_full}_${grille}_${compil_mod}_${FLAG_PARA} 567 fi 551 nomlib=`echo ${arch}_${physique}_${dim_full}_${grille}_${compil_mod}_parall${parallel}_${CPP_KEY}_${FLAG_PARA} | sed -e 's/ //g' -e 's/-//g ' | sed -e 's/CPP_//g'` 552 echo $nomlib 568 553 569 554 if [[ ! -d "${LIBOGCM}/${nomlib}" ]] … … 585 570 INCLUDE="$INCLUDE"' -I$(LIBF)/phy'"$physique" 586 571 fi 587 INCLUDE="$INCLUDE"' -I $(LIBF)/dyn'${dimc}'d'$FLAG_PARA' -I'${LIBOGCM}/${nomlib}572 INCLUDE="$INCLUDE"' -I'${LIBOGCM}/${nomlib} 588 573 589 574 # ranlib utility (check it exists or else default to ls) … … 645 630 DIM=$dimc \ 646 631 FLAG_PARA=$FLAG_PARA \ 647 L_ADJNT= "$adjnt"\632 L_ADJNT=$adjnt \ 648 633 L_COSP="$lcosp" \ 649 634 L_CHIMIE="$libchimie" \ … … 660 645 PROG=$code 661 646 647 662 648 if [[ -r $LIBFGCM/grid/dimensions.h ]] 663 649 then -
LMDZ5/branches/testing/makelmdz_fcm
r1795 r1864 29 29 LIBPREFIX="" 30 30 cosp=false 31 job=1 32 full='' 31 33 32 34 LMDGCM=`/bin/pwd` … … 79 81 [-filtre NOMFILTRE] : use filtre from libf/NOMFILTRE (default: filtrez) 80 82 [-link LINKS] : additional links with other libraries 83 [-j n] : active parallel compiling on ntask 84 [-full] : full recompiling 81 85 [-fcm_path path] : path to the fcm tool (default: tools/fcm/bin) 82 86 [-ext_src path] : path to an additional set of routines to compile with the model … … 147 151 "-ext_src") 148 152 EXT_SRC=$2 ; shift ; shift ;; 153 "-j") 154 job=$2 ; shift ; shift ;; 155 "-full") 156 full="-full" ; shift ;; 149 157 150 158 "-arch") … … 248 256 fi 249 257 250 if [[ "$veget" == "orchidee2.0" ]] 251 then 252 # orchidee2.0 : 253 # Compile with ORCHIDEE 2.0 (or more recent) 258 if [ "$veget" = "true" -o "$veget" = "orchidee1.9" -o "$veget" = "orchidee2.0" ] 259 then 260 #NB: option 'true': for backward compatibility. To be used with ORCHIDEE tag 1.9-1.9.6 261 # For this case, cpp flag ORCHIDEE_NOOPENMP must be added to the makelmdz_fcm arguments 262 # option orchidee1.9 : Compile with ORCHIDEE version up to the inclusion of OpenMP in ORCHIDEE : tag 1.9-1.9.5(version AR5)-1.9.6 263 INCLUDE="${INCLUDE} -I${ORCH_INCDIR}" 254 264 CPP_KEY="$CPP_KEY CPP_VEGET" 255 INCLUDE="${INCLUDE} -I${ORCH_INCDIR}" 256 LIB="${LIB} -L${ORCH_LIBDIR} -l${LIBPREFIX}orchidee " 257 elif [[ "$veget" == "orchidee1.9" ]] 258 then 259 # orchidee1.9 : 260 # Compile with ORCHIDEE version up to the inclusion of OpenMP in ORCHIDEE : tag 1.9-1.9.5(version AR5)-1.9.6 261 CPP_KEY="$CPP_KEY CPP_VEGET ORCHIDEE_NOOPENMP" 262 INCLUDE="${INCLUDE} -I${ORCH_INCDIR}" 263 LIB="${LIB} -L${ORCH_LIBDIR} -l${LIBPREFIX}sechiba -l${LIBPREFIX}parameters -l${LIBPREFIX}stomate -l${LIBPREFIX}parallel -l${LIBPREFIX}orglob" 264 elif [[ "$veget" == "true" ]] 265 then 266 # true : 267 # Obsolete, for backward compatibility. To be used with ORCHIDEE tag 1.9-1.9.6 268 # For this case, cpp flag ORCHIDEE_NOOPENMP must be added to the makelmdz_fcm arguments 269 CPP_KEY="$CPP_KEY CPP_VEGET" 270 INCLUDE="${INCLUDE} -I${ORCH_INCDIR}" 271 LIB="${LIB} -L${ORCH_LIBDIR} -l${LIBPREFIX}sechiba -l${LIBPREFIX}parameters -l${LIBPREFIX}stomate -l${LIBPREFIX}parallel -l${LIBPREFIX}orglob" 272 elif [[ "$veget" != "false" ]] 273 then 265 # temporary, for Orchidee versions 1.9.* (before openmp activation) 266 if [[ "$veget" == "orchidee1.9" ]] ; then 267 CPP_KEY="$CPP_KEY ORCHIDEE_NOOPENMP" 268 fi 269 if [[ "$veget" == "orchidee2.0" ]] ; then 270 orch_libs="sechiba parameters stomate parallel orglob orchidee" 271 else 272 orch_libs="sechiba parameters stomate parallel orglob" 273 fi 274 LIB="${LIB} -L${ORCH_LIBDIR}" 275 for lib in ${orch_libs} ; do 276 if [ -f ${ORCH_LIBDIR}/lib${LIBPREFIX}$lib.a ] ; then 277 LIB="${LIB} -l${LIBPREFIX}$lib " 278 fi 279 done 280 elif [[ "$veget" != "false" ]] ; then 274 281 echo "Option -v $veget does not exist" 275 282 echo "Use ./makelmdz_fcm -h for more information" … … 468 475 469 476 rm -f $LIBOGCM/${arch}${SUFF_NAME}/.config/fcm.bld.lock 470 ./build_gcm ${fcm_path} 477 ./build_gcm ${fcm_path} -j $job $full 471 478 472 479 rm -rf tmp_src
Note: See TracChangeset
for help on using the changeset viewer.