Changeset 5093
- Timestamp:
- Jul 21, 2024, 1:07:18 PM (11 months ago)
- Location:
- LMDZ6/branches/Amaury_dev
- Files:
-
- 58 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/Licence_CeCILL_V2-fr.txt
r1907 r5093 361 361 Article 8 - RESPONSABILITE 362 362 363 8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la 363 8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la 364 364 faculté, sous réserve de prouver la faute du Concédant concerné, de 365 365 solliciter la réparation du préjudice direct qu'il subirait du fait du … … 400 400 9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le 401 401 Concédant sans autre garantie, expresse ou tacite, que celle prévue à 402 l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale, 402 l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale, 403 403 son caractère sécurisé, innovant ou pertinent. 404 404 … … 511 511 512 512 Version 2.0 du 2006-09-05. 513 -
LMDZ6/branches/Amaury_dev/bld.cfg.ecrad
r4918 r5093 33 33 src::phy_common %PHY_COMMON 34 34 src::cosp %COSP 35 src::ext_src %EXT_SRC35 #src::ext_src %EXT_SRC 36 36 src::Ocean_skin %SRC_PATH/%PHYS/Ocean_skin 37 37 src::lmdz %RAD/lmdz … … 54 54 bld::outfile_ext::exe %SUFF_NAME 55 55 bld::target liblmdz.a %EXEC%SUFF_NAME 56 bld::exe_dep 56 bld::exe_dep 57 57 58 58 59 59 dir::root %CONFIG_PATH 60 #dir::lib %BASE_CONFIG_PATH61 dir::bin %ROOT_PATH/bin62 63 #search_src 164 60 65 61 bld::tool::fpp %FPP -
LMDZ6/branches/Amaury_dev/bld.cfg.rrtm
r4918 r5093 33 33 src::phy_common %PHY_COMMON 34 34 src::cosp %COSP 35 src::ext_src %EXT_SRC35 #src::ext_src %EXT_SRC 36 36 src::Ocean_skin %SRC_PATH/%PHYS/Ocean_skin 37 37 … … 47 47 bld::outfile_ext::exe %SUFF_NAME 48 48 bld::target liblmdz.a %EXEC%SUFF_NAME 49 bld::exe_dep 49 bld::exe_dep 50 50 51 51 52 52 dir::root %CONFIG_PATH 53 #dir::lib %BASE_CONFIG_PATH54 dir::bin %ROOT_PATH/bin55 56 #search_src 157 53 58 54 bld::tool::fpp %FPP -
LMDZ6/branches/Amaury_dev/build_gcm
r4103 r5093 5 5 # the full path to where the 'fcm' command is to be found 6 6 7 if [[ -f '.lock' && $force_compile == false ]]8 then9 echo "WARNING: you are probably already compiling the model somewhere else."10 echo "Wait until the first compilation is finished before launching this one."11 echo "If you are sure that you are not compiling elsewhere,"12 echo "run makelmdz_fcm with option -force_compile"13 exit 114 fi15 16 7 echo "compiling..." > '.lock' 17 8 18 job=119 9 dirname="" #path to where the fcm command will be found 20 10 if (( $# >= 1 )) ; then … … 31 21 32 22 # run "fcm build" command 33 ${dirname}fcm build $* 23 echo "Running <${dirname}fcm build " "$@" ">" 24 "${dirname}fcm" build "$@" 34 25 35 26 build_command_status=$? 36 27 37 28 # cleanup 38 \rm -f '.lock' 29 rm -f '.lock' 39 30 40 31 exit $build_command_status -
LMDZ6/branches/Amaury_dev/libf/dyn3d/bilan_dyn.F
r5082 r5093 26 26 c==================================================================== 27 27 c 28 c Sous-programme consacre �des diagnostics dynamiques de base28 c Sous-programme consacre à des diagnostics dynamiques de base 29 29 c 30 30 c … … 89 89 real ww 90 90 91 c variables dynamiques interm �diaires91 c variables dynamiques intermédiaires 92 92 REAL vcont(iip1,jjm,llm),ucont(iip1,jjp1,llm) 93 93 REAL ang(iip1,jjp1,llm),unat(iip1,jjp1,llm) … … 97 97 REAL bern(iip1,jjp1,llm) 98 98 99 c champ contenant les scalaires advect �s.99 c champ contenant les scalaires advectés. 100 100 real Q(iip1,jjp1,llm,nQ) 101 101 102 c champs cumul �s102 c champs cumulés 103 103 real ps_cum(iip1,jjp1) 104 104 real masse_cum(iip1,jjp1,llm) … … 308 308 c ---------------------------- 309 309 310 c �nergie cin�tique310 c énergie cinétique 311 311 ucont(:,:,:)=0 312 312 CALL covcont(llm,ucov,vcov,ucont,vcont) 313 313 CALL enercin(vcov,ucov,vcont,ucont,ecin) 314 314 315 c moment cin �tique315 c moment cinétique 316 316 do l=1,llm 317 317 ang(:,:,l)=ucov(:,:,l)+constang(:,:) … … 373 373 enddo 374 374 375 c flux m �ridien375 c flux méridien 376 376 c ------------- 377 377 do iQ=1,nQ … … 440 440 441 441 c===================================================================== 442 c Transport m �ridien442 c Transport méridien 443 443 c===================================================================== 444 444 -
LMDZ6/branches/Amaury_dev/libf/dyn3d/guide_mod.F90
r5088 r5093 99 99 CALL getpar('guide_teta',.false.,guide_teta,'guidage de T par Teta') 100 100 101 CALL getpar('guide_add',.false.,guide_add,'for �age constant?')101 CALL getpar('guide_add',.false.,guide_add,'forçage constant?') 102 102 CALL getpar('guide_zon',.false.,guide_zon,'guidage moy zonale') 103 103 if (guide_zon .and. abs(grossismx - 1.) > 0.01) & … … 121 121 122 122 123 ! Sauvegarde du for �age123 ! Sauvegarde du forçage 124 124 CALL getpar('guide_sav',.false.,guide_sav,'sauvegarde guidage') 125 125 CALL getpar('iguide_sav',4,iguide_sav,'freq. sauvegarde guidage') … … 1719 1719 call nf95_put_var(nid, varid_alpha_q, alpha_q) 1720 1720 ! -------------------------------------------------------------------- 1721 ! Cr �ation des variables sauvegard�es1721 ! Création des variables sauvegardées 1722 1722 ! -------------------------------------------------------------------- 1723 1723 ierr = nf90_redef(nid) -
LMDZ6/branches/Amaury_dev/libf/dyn3d/tetaleveli1j.F
r5086 r5093 57 57 c===================================================================== 58 58 if (lnew) then 59 c on r �initialise les r�indicages et les poids59 c on réinitialise les réindicages et les poids 60 60 c===================================================================== 61 61 … … 96 96 c 97 97 c ... Modif . P. Le Van ( 20/01/98) .... 98 c Modif Fr �d�ric Hourdin (3/01/02)98 c Modif Frédéric Hourdin (3/01/02) 99 99 100 100 IF(pgcm(i,lb(i))==0.OR. -
LMDZ6/branches/Amaury_dev/libf/dyn3d/tetaleveli1j1.F
r5086 r5093 57 57 c===================================================================== 58 58 if (lnew) then 59 c on r �initialise les r�indicages et les poids59 c on réinitialise les réindicages et les poids 60 60 c===================================================================== 61 61 … … 96 96 c 97 97 c ... Modif . P. Le Van ( 20/01/98) .... 98 c Modif Fr �d�ric Hourdin (3/01/02)98 c Modif Frédéric Hourdin (3/01/02) 99 99 100 100 IF(pgcm(i,lb(i))==0.OR. -
LMDZ6/branches/Amaury_dev/libf/dyn3d/top_bound.F
r5082 r5093 27 27 c ------ 28 28 c 29 c Dissipation lin �aire (ex top_bound de la physique)29 c Dissipation linéaire (ex top_bound de la physique) 30 30 c 31 31 c======================================================================= -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/comdissnew.h
r1952 r5093 5 5 ! ATTENTION!!!!: ce fichier include est compatible format fixe/format libre 6 6 ! veillez à n'utiliser que des ! pour les commentaires 7 ! et à bien positionner les & des lignes de continuation 7 ! et à bien positionner les & des lignes de continuation 8 8 ! (les placer en colonne 6 et en colonne 73) 9 9 ! -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/disvert_noterre.F
r5086 r5093 24 24 c 25 25 c======================================================================= 26 c Discretisation verticale en coordonn �e hybride (ou sigma)26 c Discretisation verticale en coordonnée hybride (ou sigma) 27 27 c 28 28 c======================================================================= … … 208 208 c Calcul au milieu des couches : 209 209 c WARNING : le choix de placer le milieu des couches au niveau de 210 c pression interm �diaire est arbitraire et pourrait etre modifi�.210 c pression intermédiaire est arbitraire et pourrait etre modifié. 211 211 c Le calcul du niveau pour la derniere couche 212 212 c (on met la meme distance (en log pression) entre P(llm) 213 213 c et P(llm -1) qu'entre P(llm-1) et P(llm-2) ) est 214 c Specifique. Ce choix est sp �cifi�ici ET dans exner_milieu.F214 c Specifique. Ce choix est spécifié ici ET dans exner_milieu.F 215 215 216 216 DO l = 1, llm-1 … … 284 284 c L'objectif est de calculer newsig telle que 285 285 c (1 -pa/preff)*exp(1-1./newsig**2)+(pa/preff)*newsig = sig 286 c Cela ne se r �soud pas analytiquement:287 c => on r �soud par iterration bourrine286 c Cela ne se résoud pas analytiquement: 287 c => on résoud par iterration bourrine 288 288 c ---------------------------------------------- 289 289 c Information : where exp(1-1./x**2) become << x … … 320 320 newsig=(X2+newsig)*0.5 321 321 end if 322 c Test : on arete lorsque on approxime sig � moins de 0.01 m pr�s322 c Test : on arete lorsque on approxime sig à moins de 0.01 m près 323 323 c (en pseudo altitude) : 324 324 IF(abs(10.*log(F))<1.E-5) goto 999 -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/interpre.F
r5086 r5093 41 41 42 42 c CALCUL DE LA PRESSION DE SURFACE 43 c Les coefficients ap et bp sont pass �s en common44 c Calcul de la pression au sol en mb optimis �e pour43 c Les coefficients ap et bp sont passés en common 44 c Calcul de la pression au sol en mb optimisée pour 45 45 c la vectorialisation 46 46 … … 67 67 c RECONSTRUCTION DES CHAMPS CONTRAVARIANTS 68 68 c Le programme ppm3d travaille avec les composantes 69 c de vitesse et pas les flux, on doit donc passer de l'un �l'autre70 c Dans le m �me temps, on fait le changement d'orientation du vent en v69 c de vitesse et pas les flux, on doit donc passer de l'un à l'autre 70 c Dans le même temps, on fait le changement d'orientation du vent en v 71 71 do l=1,llm 72 72 do j=1,jjm … … 99 99 100 100 c INVERSION DES NIVEAUX 101 c le programme ppm3d travaille avec une 3 �me coordonn�e invers�e par rapport101 c le programme ppm3d travaille avec une 3ème coordonnée inversée par rapport 102 102 c de celle du LMDZ: z=1<=>niveau max, z=llm+1<=>surface 103 c On passe donc des niveaux du LMDZ �ceux de Lin103 c On passe donc des niveaux du LMDZ à ceux de Lin 104 104 105 105 do l=1,llm+1 -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/ppm3d.F
r5079 r5093 68 68 implicit none 69 69 70 c rajout de d �clarations70 c rajout de déclarations 71 71 c integer Jmax,kmax,ndt0,nstep,k,j,i,ic,l,js,jn,imh,iad,jad,krd 72 72 c integer iu,iiu,j2,jmr,js0,jt … … 769 769 DO k=1,NLAY 770 770 DO I=1,IMR 771 c j=1 c'est le p �le Sud, j=JNP c'est le p�le Nord771 c j=1 c'est le pôle Sud, j=JNP c'est le pôle Nord 772 772 Q(I, 2,k,IC) = Q(I, 1,k,IC) 773 773 Q(I,JMR,k,IC) = Q(I,JNP,k,IC) -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/traceurpole.F
r2622 r5093 28 28 29 29 30 c On impose une seule valeur au pôle Sud j=jjm+1=jjp1 30 c On impose une seule valeur au pôle Sud j=jjm+1=jjp1 31 31 sommemasses=0 32 32 sommemqs=0 -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/bilan_dyn_loc.F
r5082 r5093 30 30 c==================================================================== 31 31 c 32 c Sous-programme consacre �des diagnostics dynamiques de base32 c Sous-programme consacre à des diagnostics dynamiques de base 33 33 c 34 34 c … … 88 88 real ww 89 89 90 c variables dynamiques interm �diaires90 c variables dynamiques intermédiaires 91 91 REAL,SAVE,ALLOCATABLE :: vcont(:,:,:),ucont(:,:,:) 92 92 REAL,SAVE,ALLOCATABLE :: ang(:,:,:),unat(:,:,:) … … 96 96 REAL,SAVE,ALLOCATABLE :: bern(:,:,:) 97 97 98 c champ contenant les scalaires advect �s.98 c champ contenant les scalaires advectés. 99 99 real,SAVE,ALLOCATABLE :: Q(:,:,:,:) 100 100 101 c champs cumul �s101 c champs cumulés 102 102 real,SAVE,ALLOCATABLE :: ps_cum(:,:) 103 103 real,SAVE,ALLOCATABLE :: masse_cum(:,:,:) … … 370 370 jje=jj_end 371 371 372 c �nergie cin�tique372 c énergie cinétique 373 373 ! ucont(:,jjb:jje,:)=0 374 374 … … 382 382 CALL enercin_loc(vcov,ucov,vcont,ucont,ecin) 383 383 384 c moment cin �tique384 c moment cinétique 385 385 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 386 386 do l=1,llm … … 490 490 enddo 491 491 492 c flux m �ridien492 c flux méridien 493 493 c ------------- 494 494 do iQ=1,nQ … … 642 642 643 643 c===================================================================== 644 c Transport m �ridien644 c Transport méridien 645 645 c===================================================================== 646 646 -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/conf_gcm.F90
r5082 r5093 121 121 122 122 !Config Key = prt_level 123 !Config Desc = niveau d'impressions de d �bogage123 !Config Desc = niveau d'impressions de débogage 124 124 !Config Def = 0 125 !Config Help = Niveau d'impression pour le d �bogage125 !Config Help = Niveau d'impression pour le débogage 126 126 !Config (0 = minimum d'impression) 127 127 prt_level = 0 … … 921 921 922 922 !Config Key = use_mpi_alloc 923 !Config Desc = Utilise un buffer MPI en m �moire globale923 !Config Desc = Utilise un buffer MPI en mémoire globale 924 924 !Config Def = false 925 925 !Config Help = permet d'activer l'utilisation d'un buffer MPI 926 !Config en m �moire globale a l'aide de la fonction MPI_ALLOC.927 !Config Cela peut am �liorer la bande passante des transferts MPI926 !Config en mémoire globale a l'aide de la fonction MPI_ALLOC. 927 !Config Cela peut améliorer la bande passante des transferts MPI 928 928 !Config d'un facteur 2 929 929 use_mpi_alloc=.FALSE. … … 933 933 !Config Desc = activation de la version strato 934 934 !Config Def = .FALSE. 935 !Config Help = active la version stratosph �rique de LMDZ de F. Lott935 !Config Help = active la version stratosphérique de LMDZ de F. Lott 936 936 937 937 ok_strato=.FALSE. -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/guide_loc_mod.F90
r5088 r5093 100 100 CALL getpar('guide_teta',.false.,guide_teta,'guidage de T par Teta') 101 101 102 CALL getpar('guide_add',.false.,guide_add,'for �age constant?')102 CALL getpar('guide_add',.false.,guide_add,'foréage constant?') 103 103 CALL getpar('guide_zon',.false.,guide_zon,'guidage moy zonale') 104 104 if (guide_zon .and. abs(grossismx - 1.) > 0.01) & … … 121 121 CALL getpar('plim_guide_BL',85000.,plim_guide_BL,'BL top presnivs value') 122 122 123 ! Sauvegarde du for �age123 ! Sauvegarde du forçage 124 124 CALL getpar('guide_sav',.false.,guide_sav,'sauvegarde guidage') 125 125 CALL getpar('iguide_sav',4,iguide_sav,'freq. sauvegarde guidage') … … 2269 2269 call nf95_put_var(nid, varid_alpha_q, zq) 2270 2270 ! -------------------------------------------------------------------- 2271 ! Cr �ation des variables sauvegard�es2271 ! Création des variables sauvegardées 2272 2272 ! -------------------------------------------------------------------- 2273 2273 ierr = nf90_redef(nid) -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/parallel_lmdz.F90
r5089 r5093 222 222 !Config Desc = taille des blocs openmp 223 223 !Config Def = 1 224 !Config Help = defini la taille des packets d'it �ration openmp224 !Config Help = defini la taille des packets d'itération openmp 225 225 !Config distribue a chaque tache lors de l'entree dans une 226 226 !Config boucle parallelisee -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/times.F90
r4600 r5093 194 194 endif 195 195 196 ENDIF ! using_mp �196 ENDIF ! using_mpi 197 197 end subroutine allgather_timer_average 198 198 -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/top_bound_loc.F
r5082 r5093 27 27 c ------ 28 28 c 29 c Dissipation lin �aire (ex top_bound de la physique)29 c Dissipation linéaire (ex top_bound de la physique) 30 30 c 31 31 c======================================================================= -
LMDZ6/branches/Amaury_dev/libf/dynphy_lonlat/lmdz_calfis_loc.F90
r5090 r5093 187 187 ! Introduction du splitting (FH) 188 188 ! Question pour Yann : 189 ! J'ai �t� surpris au d�but que les tableaux zufi_omp, zdufi_omp n'co soitent189 ! J'ai été surpris au début que les tableaux zufi_omp, zdufi_omp n'co soitent 190 190 ! en SAVE. Je crois comprendre que c'est parce que tu voulais qu'il 191 191 ! soit allocatable (plutot par exemple que de passer une dimension 192 ! d �pendant du process en argument des routines) et que, du coup,193 ! le SAVE �vite d'avoir � refaire l'allocation �chaque appel.192 ! dépendant du process en argument des routines) et que, du coup, 193 ! le SAVE évite d'avoir à refaire l'allocation à chaque appel. 194 194 ! Tu confirmes ? 195 ! J'ai suivi le m �me principe pour les zdufic_omp195 ! J'ai suivi le même principe pour les zdufic_omp 196 196 ! Mais c'est surement bien que tu controles. 197 197 ! -
LMDZ6/branches/Amaury_dev/libf/misc/iniprint.h
r2352 r5093 4 4 ! 5 5 ! gestion des impressions de sorties et de débogage 6 ! lunout: unité du fichier dans lequel se font les sorties 6 ! lunout: unité du fichier dans lequel se font les sorties 7 7 ! (par defaut 6, la sortie standard) 8 8 ! prt_level: niveau d'impression souhaité (0 = minimum) -
LMDZ6/branches/Amaury_dev/libf/misc/write_field.F90
r5090 r5093 282 282 //trim(int2str(pos+offset)) & 283 283 //'," ---> ",g22.16," | ")' 284 ! d �pent de l'impl�mention, sur compaq, c'est necessaire284 ! dépend de l'implémention, sur compaq, c'est necessaire 285 285 ! Pos=Pos+ColumnSize 286 286 endif -
LMDZ6/branches/Amaury_dev/libf/phy_common/mod_phys_lmdz_mpi_transfert.F90
r5081 r5093 65 65 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 66 66 67 !! -- Les chaine de charact �re -- !!67 !! -- Les chaine de charactère -- !! 68 68 69 69 SUBROUTINE bcast_mpi_c(var1) -
LMDZ6/branches/Amaury_dev/libf/phy_common/mod_phys_lmdz_omp_transfert.F90
r5058 r5093 109 109 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 110 110 111 !! -- Les chaine de charact �re -- !!111 !! -- Les chaine de charactère -- !! 112 112 113 113 SUBROUTINE bcast_omp_c(var) -
LMDZ6/branches/Amaury_dev/libf/phylmd/add_wake_tend.F90
r5081 r5093 1 1 SUBROUTINE add_wake_tend(zddeltat, zddeltaq, zds, zdas, zddensw, zddensaw, zoccur, text, abortphy) 2 2 !=================================================================== 3 ! Ajoute les tendances li �es aux diverses parametrisations physiques aux3 ! Ajoute les tendances liées aux diverses parametrisations physiques aux 4 4 ! variables d'etat des poches froides. 5 5 !=================================================================== -
LMDZ6/branches/Amaury_dev/libf/phylmd/calcul_fluxs_mod.F90
r5082 r5093 55 55 ! dflux_s derivee du flux de chaleur sensible / Ts 56 56 ! dflux_l derivee du flux de chaleur latente / Ts 57 ! sens_prec_liq flux sensible li �aux echanges de precipitations liquides57 ! sens_prec_liq flux sensible lié aux echanges de precipitations liquides 58 58 ! sens_prec_sol precipitations solides 59 ! lat_prec_liq flux latent li �aux echanges de precipitations liquides59 ! lat_prec_liq flux latent lié aux echanges de precipitations liquides 60 60 ! lat_prec_sol precipitations solides 61 61 -
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp/cosp_output_write_mod.F90
r5082 r5093 457 457 458 458 ! ug On récupère le type écrit de la structure: 459 ! Assez moche, �|refaire si meilleure méthode...459 ! Assez moche, à refaire si meilleure méthode... 460 460 IF (INDEX(var%cosp_typeecrit(iff), "once") > 0) THEN 461 461 typeecrit = 'once' … … 559 559 560 560 ! ug On récupère le type écrit de la structure: 561 ! Assez moche, �|refaire si meilleure méthode...561 ! Assez moche, à refaire si meilleure méthode... 562 562 IF (INDEX(var%cosp_typeecrit(iff), "once") > 0) THEN 563 563 typeecrit = 'once' -
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp/lidar_simulator.F90
r5087 r5093 690 690 ! Lum_norm=f(tetaS,tau_cloud) derived from adding-doubling calculations 691 691 ! valid ONLY ABOVE OCEAN (albedo_sfce=5%) 692 ! valid only in one viewing direction (theta_v=30 �, phi_s-phi_v=320�)692 ! valid only in one viewing direction (theta_v=30°, phi_s-phi_v=320°) 693 693 ! based on adding-doubling radiative transfer computation 694 694 ! for tau values (0 to 100) and for tetas values (0 to 80) -
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp2/cosp_output_write_mod.F90
r5082 r5093 474 474 475 475 ! ug On récupère le type écrit de la structure: 476 ! Assez moche, �|refaire si meilleure méthode...476 ! Assez moche, à refaire si meilleure méthode... 477 477 IF (INDEX(var%cosp_typeecrit(iff), "once") > 0) THEN 478 478 typeecrit = 'once' … … 576 576 577 577 ! ug On récupère le type écrit de la structure: 578 ! Assez moche, �|refaire si meilleure méthode...578 ! Assez moche, à refaire si meilleure méthode... 579 579 IF (INDEX(var%cosp_typeecrit(iff), "once") > 0) THEN 580 580 typeecrit = 'once' -
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp2/parasol.F90
r5082 r5093 81 81 ! Lum_norm=f(PARASOL_SZA,tau_cloud) derived from adding-doubling calculations 82 82 ! valid ONLY ABOVE OCEAN (albedo_sfce=5%) 83 ! valid only in one viewing direction (theta_v=30 �, phi_s-phi_v=320�)83 ! valid only in one viewing direction (theta_v=30°, phi_s-phi_v=320°) 84 84 ! based on adding-doubling radiative transfer computation 85 85 ! for PARASOL_TAU values (0 to 100) and for PARASOL_SZA values (0 to 80) -
LMDZ6/branches/Amaury_dev/libf/phylmd/cospv2/lmdz_cosp_output_write_mod.F90
r5082 r5093 670 670 671 671 ! ug On récupère le type écrit de la structure: 672 ! Assez moche, �|refaire si meilleure méthode...672 ! Assez moche, à refaire si meilleure méthode... 673 673 IF (INDEX(var%cosp_typeecrit(iff), "once") > 0) THEN 674 674 typeecrit = 'once' … … 766 766 767 767 ! ug On récupère le type écrit de la structure: 768 ! Assez moche, �|refaire si meilleure méthode...768 ! Assez moche, à refaire si meilleure méthode... 769 769 IF (INDEX(var%cosp_typeecrit(iff), "once") > 0) THEN 770 770 typeecrit = 'once' -
LMDZ6/branches/Amaury_dev/libf/phylmd/cospv2/parasol.F90
r5082 r5093 81 81 ! Lum_norm=f(PARASOL_SZA,tau_cloud) derived from adding-doubling calculations 82 82 ! valid ONLY ABOVE OCEAN (albedo_sfce=5%) 83 ! valid only in one viewing direction (theta_v=30 �, phi_s-phi_v=320�)83 ! valid only in one viewing direction (theta_v=30°, phi_s-phi_v=320°) 84 84 ! based on adding-doubling radiative transfer computation 85 85 ! for PARASOL_TAU values (0 to 100) and for PARASOL_SZA values (0 to 80) -
LMDZ6/branches/Amaury_dev/libf/phylmd/cv30_routines.F90
r5086 r5093 3082 3082 3083 3083 ! fraction deau condensee dans les melanges convertie en precip : epm 3084 ! et eau condens �e pr�cipit�e dans masse d'air satur�: l_m*dM_m/dzdz.dzdz3084 ! et eau condensée précipitée dans masse d'air saturé : l_m*dM_m/dzdz.dzdz 3085 3085 DO j = 1, nam1 3086 3086 DO k = 1, j - 1 … … 3277 3277 3278 3278 ! On fait varier epmax en fn de la cape 3279 ! Il faut donc recalculer ep, et hp qui a d �j� �t� calcul�et3280 ! qui en d �pend3281 ! Toutes les autres variables fn de ep sont calcul �es plus bas.3279 ! Il faut donc recalculer ep, et hp qui a déjà été calculé et 3280 ! qui en dépend 3281 ! Toutes les autres variables fn de ep sont calculées plus bas. 3282 3282 3283 3283 INCLUDE "cvthermo.h" -
LMDZ6/branches/Amaury_dev/libf/phylmd/cv3_routines.F90
r5086 r5093 1101 1101 1102 1102 !JAM-------------------------------------------------------------------- 1103 ! Calcul de la quantit �d'eau sous forme de glace1103 ! Calcul de la quantité d'eau sous forme de glace 1104 1104 ! -------------------------------------------------------------------- 1105 1105 INTEGER nl, len … … 3072 3072 !!---end jyg--- 3073 3073 3074 ! --------retour �la formulation originale d'Emanuel.3074 ! --------retour à la formulation originale d'Emanuel. 3075 3075 IF (cvflag_ice) THEN 3076 3076 … … 3082 3082 3083 3083 !JAM Attention: evap=sigt*E 3084 ! Modification: evap devient l' �vaporation en milieu de couche3085 ! car n �cessaire dans cv3_yield3086 ! Du coup, il faut modifier pas mal d' �quations...3084 ! Modification: evap devient l'évaporation en milieu de couche 3085 ! car nécessaire dans cv3_yield 3086 ! Du coup, il faut modifier pas mal d'équations... 3087 3087 ! et l'expression de afac qui devient afac1 3088 3088 ! revap=sqrt((prec(i+1)+prec(i))/2) … … 3103 3103 !JYG Dans sa formulation originale, Emanuel calcule l'evaporation par: 3104 3104 ! c evap(il,i)=sigt*afac*revap 3105 ! ce qui n'est pas correct. Dans cv_routines, la formulation a �t�modifiee.3105 ! ce qui n'est pas correct. Dans cv_routines, la formulation a été modifiee. 3106 3106 ! Ici,l'evaporation evap est simplement calculee par l'equation de 3107 3107 ! conservation. … … 4902 4902 ENDDO ! k 4903 4903 4904 ! 14/01/15 AJ delta n'a rien � faire l�...4904 ! 14/01/15 AJ delta n'a rien à faire là... 4905 4905 DO il = 1, ncum ! cld 4906 4906 !! IF (wa(il,i)>0.0 .AND. iflag(il)<=1) & ! cld … … 4918 4918 4919 4919 ! IM cf. FH 4920 ! 14/01/15 AJ ne correspond pas � ce qui a �t� cod� par JYG et SB4920 ! 14/01/15 AJ ne correspond pas à ce qui a été codé par JYG et SB 4921 4921 4922 4922 IF (iflag_clw==0) THEN ! cld … … 4991 4991 4992 4992 ! fraction deau condensee dans les melanges convertie en precip : epm 4993 ! et eau condens �e pr�cipit�e dans masse d'air satur�: l_m*dM_m/dzdz.dzdz4993 ! et eau condensée précipitée dans masse d'air saturé : l_m*dM_m/dzdz.dzdz 4994 4994 DO j = 1, nl 4995 4995 DO k = 1, nl … … 5141 5141 5142 5142 ! On fait varier epmax en fn de la cape 5143 ! Il faut donc recalculer ep, et hp qui a d �j� �t� calcul�et5144 ! qui en d �pend5145 ! Toutes les autres variables fn de ep sont calcul �es plus bas.5143 ! Il faut donc recalculer ep, et hp qui a déjà été calculé et 5144 ! qui en dépend 5145 ! Toutes les autres variables fn de ep sont calculées plus bas. 5146 5146 5147 5147 include "cvthermo.h" … … 5178 5178 5179 5179 ! il faut calculer la cape: on fait un calcule simple car tant qu'on ne 5180 ! connait pas ep, on ne connait pas les m �langes, ddfts etc... qui sont5180 ! connait pas ep, on ne connait pas les mélanges, ddfts etc... qui sont 5181 5181 ! necessaires au calcul de la cape dans la nouvelle physique 5182 5182 -
LMDZ6/branches/Amaury_dev/libf/phylmd/cv_driver.F90
r3492 r5093 568 568 ,cape,ep,hp,icb,inb,clw,nk,t,h,lv & 569 569 ,epmax_diag) 570 ! on écrase ep et recalcule hp570 ! on écrase ep et recalcule hp 571 571 END IF 572 572 … … 699 699 ! si icvflag_Tpa=0, alors la fraction de glace dans l'ascendance adiabatique est 700 700 ! fonction de la temperature de l'environnement et la temperature de l'ascendance est 701 ! calculee en deux itérations, une en supposant qu'il n'y a pas de glace et l'autre 701 ! calculee en deux itérations, une en supposant qu'il n'y a pas de glace et l'autre 702 702 ! en ajoutant la glace (ancien schéma d'Arnaud Jam). 703 703 ! si icvflag_Tpa=1, alors la fraction de glace dans l'ascendance adiabatique est -
LMDZ6/branches/Amaury_dev/libf/phylmd/cvltr.F90
r5082 r5093 49 49 REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: sij ! fraction dair de lenv 50 50 REAL,DIMENSION(klon,klev),INTENT(IN) :: wght_cvfd ! weights of the layers feeding convection 51 REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: elij ! contenu en eau condens �e sp�cifique/conc deau condens�e massique51 REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: elij ! contenu en eau condensée spécifique/conc deau condensée massique 52 52 REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: epmlmMm ! eau condensee precipitee dans mel masse dair sat 53 53 REAL,DIMENSION(klon,klev),INTENT(IN) :: eplaMm ! eau condensee precipitee dans aa masse dair sat 54 54 55 REAL,DIMENSION(klon,klev),INTENT(IN) :: clw ! contenu en eau condens �e dans lasc adiab55 REAL,DIMENSION(klon,klev),INTENT(IN) :: clw ! contenu en eau condensée dans lasc adiab 56 56 REAL,DIMENSION(klon),INTENT(IN) :: sigd 57 57 INTEGER,DIMENSION(klon),INTENT(IN) :: icb,inb … … 80 80 81 81 ! RomP ! les variables sont nettoyees des valeurs aberrantes 82 REAL,DIMENSION(klon,klev) :: Pa, Pm ! pluie AA et m �langes, var temporaire82 REAL,DIMENSION(klon,klev) :: Pa, Pm ! pluie AA et mélanges, var temporaire 83 83 REAL,DIMENSION(klon,klev) :: pmflxs,pmflxr ! pmflxrIN,pmflxsIN sans valeur aberante 84 84 REAL,DIMENSION(klon,klev) :: mp ! flux de masse … … 155 155 ! On prend la moyenne des precip entre le niveau i+1 et i 156 156 ! I=3/4* (P(1+1)+P(i))/2 / (sigd*r*rho_l) 157 ! 1000kg/m3= densit �de l'eau157 ! 1000kg/m3= densité de l'eau 158 158 ! 0.75e-3 = 3/4 /1000 159 ! Par la suite, I est tout le temps multipli �par sig_d pour avoir l'impaction sur la surface de la maille160 ! on le n �glige ici pour simplifier le code159 ! Par la suite, I est tout le temps multiplié par sig_d pour avoir l'impaction sur la surface de la maille 160 ! on le néglige ici pour simplifier le code 161 161 do j=1,klev-1 162 162 do i=1,klon … … 201 201 END DO 202 202 203 ! suppression des valeurs tr �s faibles (~1e-320)203 ! suppression des valeurs très faibles (~1e-320) 204 204 ! multiplication de levaporation pour lavoir par unite de temps 205 205 ! et par unite de surface de la maille … … 468 468 kappa(i,j)=1. 469 469 if(j==1) then 470 qDi(i,j,it)=qDi(i,j+1,it) !orig tr(i,j,it) ! mp(1)=0 donc tout vient de la couche sup �rieure470 qDi(i,j,it)=qDi(i,j+1,it) !orig tr(i,j,it) ! mp(1)=0 donc tout vient de la couche supérieure 471 471 elseif(mp(i,j+1)>mp(i,j).and.mp(i,j+1)>1.e-10) then 472 472 qDi(i,j,it)=qDi(i,j+1,it) -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_amma_read.F90
r5088 r5093 389 389 endif 390 390 if (annee_ref==2006 .and. day1<day_ini_amma) then 391 print*,'AMMA a d �but�le 10 juillet 2006',day1,day_ini_amma391 print*,'AMMA a débuté le 10 juillet 2006',day1,day_ini_amma 392 392 print*,'Changer dayref dans run.def' 393 393 stop -
LMDZ6/branches/Amaury_dev/libf/phylmd/hbtm_mod.F90
r3774 r5093 181 181 ! ++ r4 = 35.86 7.66 Kelvin 182 182 ! ++ q_sat = eps*e_sat/(p-(1-eps)*e_sat) 183 ! ++ deriv �:183 ! ++ derivé : 184 184 ! ++ ========= 185 185 ! ++ r3*(Tf-r4)*q_sat(T,p) -
LMDZ6/branches/Amaury_dev/libf/phylmd/init_be.F90
r5082 r5093 62 62 WRITE(*,*)'PASSAGE init_be ...' 63 63 64 ! la source est maintenant d �finie independemment de la valeur de klev.64 ! la source est maintenant définie independemment de la valeur de klev. 65 65 !!! Source actuellement definie pour klev = 19 et klev >= 39 66 66 !! IF (klev /= 19 .AND. klev<39) CALL abort_physic("init_be","Source du be7 necessite klev=19 ou klev>=39",1) -
LMDZ6/branches/Amaury_dev/libf/phylmd/inlandsis/sisvat_tso.F
r3900 r5093 623 623 c #EU TsisSV(ikl,isl) = max(TaT_SV(ikl)-15.,TsisSV(ikl,isl)) 624 624 625 !XF 18/11/2018 to avoid ST reaching 70 �C!!625 !XF 18/11/2018 to avoid ST reaching 70°C!! 626 626 !It is an error compensation but does not work over tundra 627 627 -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_alp.F90
r5087 r5093 29 29 ! Nicolas Rochetin et Jean-Yves Grandpeix 30 30 ! pour la fermeture stochastique. 2012 31 ! Fr �d�ric Hourdin :31 ! Frédéric Hourdin : 32 32 ! netoyage informatique. 2022 33 33 ! … … 81 81 INTEGER ig,k,l 82 82 integer nsrf 83 real rhobarz0(ngrid) ! Densit �au LCL83 real rhobarz0(ngrid) ! Densité au LCL 84 84 logical ok_lcl(ngrid) ! Existence du LCL des thermiques 85 85 integer klcl(ngrid) ! Niveau du LCL 86 86 real interp(ngrid) ! Coef d'interpolation pour le LCL 87 87 !--Triggering 88 real, parameter :: su_cst=4e4 ! Surface unite: celle d'un updraft �l�mentaire88 real, parameter :: su_cst=4e4 ! Surface unite: celle d'un updraft élémentaire 89 89 real, parameter :: hcoef=1 ! Coefficient directeur pour le calcul de s2 90 real, parameter :: hmincoef=0.3 ! Coefficient directeur pour l'ordonn �e � l'origine pour le calcul de s291 real, parameter :: eps1=0.3 ! Fraction de surface occup �e par la population 1 : eps1=n1*s1/(fraca0*Sd)92 real, dimension(ngrid) :: hmin ! Ordonn �e �l'origine pour le calcul de s290 real, parameter :: hmincoef=0.3 ! Coefficient directeur pour l'ordonnée à l'origine pour le calcul de s2 91 real, parameter :: eps1=0.3 ! Fraction de surface occupée par la population 1 : eps1=n1*s1/(fraca0*Sd) 92 real, dimension(ngrid) :: hmin ! Ordonnée à l'origine pour le calcul de s2 93 93 real, dimension(ngrid) :: zmax_moy ! Hauteur moyenne des thermiques : zmax_moy = zlcl + 0.33 (zmax-zlcl) 94 94 real, parameter :: zmax_moy_coef=0.33 … … 100 100 real, dimension(ngrid,nlay) :: pbl_tke_max ! Profil de TKE moyenne 101 101 real, dimension(ngrid) :: pbl_tke_max0 ! TKE moyenne au LCL 102 real, dimension(ngrid,nlay) :: w_ls ! Vitesse verticale grande �chelle (m/s)103 real, parameter :: coef_m=1. ! On consid �re un rendement pour alp_bl_fluct_m104 real, parameter :: coef_tke=1. ! On consid �re un rendement pour alp_bl_fluct_tke102 real, dimension(ngrid,nlay) :: w_ls ! Vitesse verticale grande échelle (m/s) 103 real, parameter :: coef_m=1. ! On considère un rendement pour alp_bl_fluct_m 104 real, parameter :: coef_tke=1. ! On considère un rendement pour alp_bl_fluct_tke 105 105 real :: zdp 106 106 real, dimension(ngrid) :: alp_int,dp_int … … 171 171 !!jyg fin 172 172 173 !------------Calcul des propri �t�s du thermique au LCL173 !------------Calcul des propriétés du thermique au LCL 174 174 IF ( (iflag_trig_bl>=1) .or. (iflag_clos_bl>=1) ) THEN 175 175 … … 198 198 enddo 199 199 200 !-----Calcul de la TKE transport �e par les thermiques : therm_tke_max200 !-----Calcul de la TKE transportée par les thermiques : therm_tke_max 201 201 call thermcell_tke_transport(ngrid,nlay,ptimestep,fm0,entr0, & ! in 202 202 rg,pplev,therm_tke_max) ! out 203 203 ! print *,' thermcell_tke_transport -> ' !!jyg 204 204 205 !-----Calcul des profils verticaux de TKE hors thermiques : env_tke_max, et de la vitesse verticale grande �chelle : W_ls205 !-----Calcul des profils verticaux de TKE hors thermiques : env_tke_max, et de la vitesse verticale grande échelle : W_ls 206 206 do l=1,nlay 207 207 do ig=1,ngrid 208 pbl_tke_max(ig,l)=fraca(ig,l)*therm_tke_max(ig,l)+(1.-fraca(ig,l))*env_tke_max(ig,l) ! Recalcul de TKE moyenne apr �s transport de TKE_TH209 env_tke_max(ig,l)=(pbl_tke_max(ig,l)-fraca(ig,l)*therm_tke_max(ig,l))/(1.-fraca(ig,l)) ! Recalcul de TKE dans l'environnement apr �s transport de TKE_TH210 w_ls(ig,l)=-1.*omega(ig,l)/(RG*rhobarz(ig,l)) ! Vitesse verticale de grande �chelle208 pbl_tke_max(ig,l)=fraca(ig,l)*therm_tke_max(ig,l)+(1.-fraca(ig,l))*env_tke_max(ig,l) ! Recalcul de TKE moyenne après transport de TKE_TH 209 env_tke_max(ig,l)=(pbl_tke_max(ig,l)-fraca(ig,l)*therm_tke_max(ig,l))/(1.-fraca(ig,l)) ! Recalcul de TKE dans l'environnement après transport de TKE_TH 210 w_ls(ig,l)=-1.*omega(ig,l)/(RG*rhobarz(ig,l)) ! Vitesse verticale de grande échelle 211 211 enddo 212 212 enddo … … 253 253 254 254 255 !-----Epaisseur du nuage (depth) et d �termination de la queue du spectre de panaches (n2,s2) et du panache le plus gros (s_max)255 !-----Epaisseur du nuage (depth) et détermination de la queue du spectre de panaches (n2,s2) et du panache le plus gros (s_max) 256 256 do ig=1,ngrid 257 257 zmax_moy(ig)=zlcl(ig)+zmax_moy_coef*(zmax(ig)-zlcl(ig)) … … 328 328 enddo 329 329 330 !-----S �curit�ALP infinie330 !-----Sécurité ALP infinie 331 331 do ig=1,ngrid 332 332 if (fraca0(ig)>0.98) alp_bl_stat(ig)=2. -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_dry.F90
r5087 r5093 90 90 ! 1. le flux de masse en haut f_star(ig,l+1) 91 91 ! 2. la temperature potentielle virtuelle dans la couche ztva(ig,l) 92 ! 3. la vitesse au carr �en haut zw2(ig,l+1)92 ! 3. la vitesse au carré en haut zw2(ig,l+1) 93 93 !------------------------------------------------------------------------ 94 94 -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_dv2.F90
r5087 r5093 113 113 zf2=1. 114 114 115 ! la premi �re fois on multiplie le coefficient de freinage115 ! la première fois on multiplie le coefficient de freinage 116 116 ! par le module du vent dans la couche en dessous. 117 117 ! Mais pourquoi donc ??? -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_flux2.F90
r5087 r5093 174 174 ! FH Version en cours de test; 175 175 ! par rapport a thermcell_flux, on fait une grande boucle sur "l" 176 ! et on modifie le flux avec tous les contr �les appliques d'affilee176 ! et on modifie le flux avec tous les contrôles appliques d'affilee 177 177 ! pour la meme couche 178 178 ! Momentanement, on duplique le calcule du flux pour pouvoir comparer -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_height.F90
r5087 r5093 39 39 enddo 40 40 41 ! On traite le cas particulier qu'il faudrait �viter ou le thermique41 ! On traite le cas particulier qu'il faudrait éviter ou le thermique 42 42 ! atteind le haut du modele ... 43 43 do ig=1,ngrid -
LMDZ6/branches/Amaury_dev/libf/phylmd/o3_chem_m.F90
r5086 r5093 24 24 25 25 integer, intent(in):: julien ! jour julien, 1 <= julien <= 360 26 real, intent(in):: gmtime ! heure de la journ �e en fraction de jour26 real, intent(in):: gmtime ! heure de la journée en fraction de jour 27 27 real, intent(in):: t_seri(:, :) ! (klon, nbp_lev) temperature, in K 28 28 … … 59 59 real earth_long 60 60 ! (longitude vraie de la Terre dans son orbite solaire, par 61 ! rapport au point vernal (21 mars), en degr �s)61 ! rapport au point vernal (21 mars), en degrés) 62 62 63 63 real pmu0(klon) ! mean of cosine of solar zenith angle during "pdtphys" -
LMDZ6/branches/Amaury_dev/libf/phylmd/phyaqua_mod.F90
r5090 r5093 942 942 if (type_profil==20) then 943 943 print*,'Profile SST 20' 944 ! Méthode 13 "Qmax2K" plateau réel �| l'Equateur augmenté +2K944 ! Méthode 13 "Qmax2K" plateau réel é| l'Equateur augmenté +2K 945 945 946 946 do j=1,klon … … 951 951 if (type_profil==21) then 952 952 print*,'Profile SST 21' 953 ! Méthode 13 "Qmax2K" plateau réel �| l'Equateur augmenté +2K953 ! Méthode 13 "Qmax2K" plateau réel é| l'Equateur augmenté +2K 954 954 do j=1,klon 955 955 phy_sst(j,i)=252.+55.*(1-sin(rlatd(j))**2) -
LMDZ6/branches/Amaury_dev/libf/phylmd/phys_output_var_mod.F90
r5087 r5093 164 164 165 165 REAL, SAVE, ALLOCATABLE:: tkt(:) ! (klon) 166 ! �paisseur (m) de la couche de diffusion thermique (microlayer)166 ! épaisseur (m) de la couche de diffusion thermique (microlayer) 167 167 ! cool skin thickness 168 168 169 169 REAL, SAVE, ALLOCATABLE:: tks(:) ! (klon) 170 ! �paisseur (m) de la couche de diffusion de masse (microlayer)170 ! épaisseur (m) de la couche de diffusion de masse (microlayer) 171 171 172 172 REAL, SAVE, ALLOCATABLE:: taur(:) ! (klon) momentum flux due to rain, in Pa -
LMDZ6/branches/Amaury_dev/libf/phylmd/plevel.F90
r5088 r5093 74 74 ! ===================================================================== 75 75 IF (lnew) THEN 76 ! on r �nitialise les r�ndicages et les poids76 ! on rénitialise les réndicages et les poids 77 77 ! ===================================================================== 78 78 … … 108 108 109 109 ! ... Modif . P. Le Van ( 20/01/98) .... 110 ! Modif Fr ��ic Hourdin (3/01/02)110 ! Modif Frédéric Hourdin (3/01/02) 111 111 112 112 aist(i) = log(pgcm(i,lb(i))/pres)/log(pgcm(i,lb(i))/pgcm(i,lt(i))) -
LMDZ6/branches/Amaury_dev/libf/phylmd/qsatseaw_1D.F90
r4722 r5093 48 48 !! Zeng, X., Zhao, M., and Dickinson, R. E., 1998 : Intercomparaison of bulk 49 49 !! aerodynamic algorithm for the computation of sea surface fluxes using 50 !! TOGA COARE and TAO data. Journal of Climate, vol 11, n �10, pp 2628--264450 !! TOGA COARE and TAO data. Journal of Climate, vol 11, n°10, pp 2628--2644 51 51 !! 52 52 !! -
LMDZ6/branches/Amaury_dev/libf/phylmd/slab_heat_transp_mod.F90
r5082 r5093 409 409 ELSE 410 410 alpha(:)=alpham 411 ! Tsurf-Tdeep ~ 10 �in the Tropics411 ! Tsurf-Tdeep ~ 10° in the Tropics 412 412 ENDIF 413 413 -
LMDZ6/branches/Amaury_dev/libf/phylmd/surf_land_orchidee_mod.F90
r5082 r5093 254 254 IF ( .NOT. ALLOCATED(albedo_keep)) THEN 255 255 !ym ALLOCATE(albedo_keep(klon)) 256 !ym bizarre que non allou �en knon precedement256 !ym bizarre que non alloué en knon precedement 257 257 ALLOCATE(albedo_keep(knon)) 258 258 ALLOCATE(zlev(knon)) -
LMDZ6/branches/Amaury_dev/libf/phylmd/surf_ocean_mod.F90
r5087 r5093 142 142 143 143 REAL, intent(out):: tkt(:) ! (knon) 144 ! �paisseur (m) de la couche de diffusion thermique (microlayer)144 ! épaisseur (m) de la couche de diffusion thermique (microlayer) 145 145 ! cool skin thickness 146 146 147 147 REAL, intent(out):: tks(:) ! (knon) 148 ! �paisseur (m) de la couche de diffusion de masse (microlayer)148 ! épaisseur (m) de la couche de diffusion de masse (microlayer) 149 149 150 150 REAL, intent(out):: taur(:) ! (knon) -
LMDZ6/branches/Amaury_dev/libf/phylmdiso/add_wake_tend.F90
r5082 r5093 5 5 ) 6 6 !=================================================================== 7 ! Ajoute les tendances li �es aux diverses parametrisations physiques aux7 ! Ajoute les tendances liées aux diverses parametrisations physiques aux 8 8 ! variables d'etat des poches froides. 9 9 !=================================================================== -
LMDZ6/branches/Amaury_dev/libf/phylmdiso/lmdz_wake.F90
r5086 r5093 127 127 ! wdens_ref: initial number of wakes per unit area (3D) or per 128 128 ! unit length (2D), at the beginning of each time step 129 ! Tgw : 1 sur la p �riode de onde de gravit�130 ! Cgw : vitesse de propagation de onde de gravit �129 ! Tgw : 1 sur la période de onde de gravité 130 ! Cgw : vitesse de propagation de onde de gravité 131 131 ! LL : distance entre 2 poches 132 132 133 133 ! ------------------------------------------------------------------------- 134 ! D �claration de variables134 ! Déclaration de variables 135 135 ! ------------------------------------------------------------------------- 136 136 … … 196 196 ! ------------------- 197 197 198 ! Variables �fixer198 ! Variables à fixer 199 199 INTEGER, SAVE :: igout 200 200 !$OMP THREADPRIVATE(igout) … … 383 383 ! Configuration de coefgw,stark,wdens (22/02/06 by YU Jingmei) 384 384 385 ! coefgw : Coefficient pour les ondes de gravit �385 ! coefgw : Coefficient pour les ondes de gravité 386 386 ! stark : Coefficient k dans Cstar=k*sqrt(2*WAPE) 387 ! wdens : Densit �surfacique de poche froide387 ! wdens : Densité surfacique de poche froide 388 388 ! ------------------------------------------------------------------------- 389 389 … … 1088 1088 1089 1089 ! cc nrlmd Ajout d'un recalcul de wdens dans le cas d'un entrainement 1090 ! n �gatif de ktop �kupper --------1091 ! cc On calcule pour cela une densit �wdens0 pour laquelle on1090 ! négatif de ktop à kupper -------- 1091 ! cc On calcule pour cela une densité wdens0 pour laquelle on 1092 1092 ! aurait un entrainement nul --- 1093 1093 !jyg< … … 1096 1096 ! des descentes unsaturees. Nous faisons alors l'hypothese que la 1097 1097 ! convection profonde cree directement de nouvelles poches, sans passer 1098 ! par les thermiques. La nouvelle valeur de wdens est alors impos �e.1098 ! par les thermiques. La nouvelle valeur de wdens est alors imposée. 1099 1099 1100 1100 DO i = 1, klon … … 1195 1195 DO i = 1, klon 1196 1196 IF (wk_adv(i)) THEN 1197 ! cc nrlmd Introduction du taux de mortalit �des poches et1197 ! cc nrlmd Introduction du taux de mortalité des poches et 1198 1198 ! test sur sigmaw_max=0.4 1199 1199 ! cc d_sigmaw(i) = gfl(i)*Cstar(i)*dtimesub … … 1308 1308 1309 1309 ! c DO i=1,klon 1310 ! c print*,'Pente entre 0 et kupper (r �f�rence)'1310 ! c print*,'Pente entre 0 et kupper (référence)' 1311 1311 ! c $ ,omg(i,kupper(i)+1)/(pupper(i)-ph(i,1)) 1312 1312 ! c print*,'Pente entre ktop et kupper' … … 1602 1602 1603 1603 1604 ! Coefficient de r �partition1604 ! Coefficient de répartition 1605 1605 1606 1606 crep(i, k) = crep_sol*(ph(i,kupper(i))-ph(i,k))/ & … … 1646 1646 ! 1647 1647 1648 ! cc nrlmd Prise en compte du taux de mortalit �1649 ! cc D �finitions de entr, detr1648 ! cc nrlmd Prise en compte du taux de mortalité 1649 ! cc Définitions de entr, detr 1650 1650 !jyg< 1651 1651 !! detr(i, k) = 0. … … 1664 1664 1665 1665 1666 ! ajout d'un effet onde de gravit �-Tgw(k)*deltatw(k) 03/02/06 YU1666 ! ajout d'un effet onde de gravité -Tgw(k)*deltatw(k) 03/02/06 YU 1667 1667 ! Jingmei 1668 1668 … … 2601 2601 discrim = b*b - 4.*a*c 2602 2602 ! print*, 'x, a, b, c, discrim', x, a, b, c, discrim 2603 IF (a+b>=0.) THEN !! Condition suffisante pour la positivit �de ovap2603 IF (a+b>=0.) THEN !! Condition suffisante pour la positivité de ovap 2604 2604 alpha1(i) = 1. 2605 2605 ELSE -
LMDZ6/branches/Amaury_dev/libf/phylmdiso/phyaqua_mod.F90
r5090 r5093 963 963 if (type_profil==20) then 964 964 print*,'Profile SST 20' 965 ! Méthode 13 "Qmax2K" plateau réel �| l'Equateur augmenté +2K965 ! Méthode 13 "Qmax2K" plateau réel é| l'Equateur augmenté +2K 966 966 967 967 do j=1,klon … … 972 972 if (type_profil==21) then 973 973 print*,'Profile SST 21' 974 ! Méthode 13 "Qmax2K" plateau réel �| l'Equateur augmenté +2K974 ! Méthode 13 "Qmax2K" plateau réel é| l'Equateur augmenté +2K 975 975 do j=1,klon 976 976 phy_sst(j,i)=252.+55.*(1-sin(rlatd(j))**2) -
LMDZ6/branches/Amaury_dev/makelmdz_fcm
r5091 r5093 689 689 build_status=$? 690 690 691 rm -rf tmp_src 692 rm -rf config 691 rm -rf tmp_src config 693 692 ln -s "$LIBOGCM/$arch$SUFF_NAME/.config" config 694 693 ln -s "$LIBOGCM/$arch$SUFF_NAME/.config/ppsrc" tmp_src 694 cp -r "$LIBOGCM/$arch$SUFF_NAME/.config/bin" . 695 695 696 696 if [[ -r $LIBFGCM/grid/dimensions.h ]]; then
Note: See TracChangeset
for help on using the changeset viewer.