source: trunk/MESOSCALE/LMD_MM_MARS/SRC/DEV/NOTES.txt @ 3567

Last change on this file since 3567 was 1249, checked in by aslmd, 11 years ago

MESOSCALE. a correction was needed following a previous commit (important for linking mesoscale sources).

File size: 19.4 KB
Line 
1
2
3        -----------------------------------------------------------------------
4        -- si possible comment determiner taille ?
5
6        soit nn = e_we-1
7
8        1. nproc (souvent =4) doit diviser nn (mother domain)
9        2. grid_ratio (souvent =3) doit diviser nn+4 (nested domain)
10        3. nproc (souvent =4) doit diviser nn+4 (nested domain)
11
12        si 1 realisee --> 3 est realisee avec nproc=4 (standard pour nest simulation)
13
14        1 <--> nn = 4*i
15        2 <--> nn+4 = 3*j
16
17        les deux OK si nn+4 = 12*k
18        i.e.
19        e_we-1 pour le nested est multiple de 12
20
21        ex: 177,181,181
22            117,121,121
23        ------------------------------------------------------------------------
24
25
26
27bad synchronization physics / dynamics with LES
28--> si on a fait un update, il faut reinstaller les SOURCES du LES.
29
30
31si le systeme est sensible il vaut mieux r_aspect=1 et nsplit = 4 que
32r_aspect=0.7 et nsplit=2
33
34#nsplit_thermals = 2  !! BOF PAR RAPPORT A DEF 4
35#r_aspect_thermals = 1.0 !! MIEUX QUE DEF 0.7 si systeme sensible
36
37
38
39Mhh c'est un peu plus compliqué, car en toute rigueur il peut y avoir plusieurs traceurs poussières si on considère le cas où l'on tourne avec plusieurs bins radiativement actifs...
40
41Donc il vaut mieux détecter les scatterers poussières au début de la physique avec un code du style (à tester et corriger):
42
43-------------------------------------------------------------
44#include "aerkind.h" ! (qui contient name_iaer)
45
46 (...blabla)
47
48      INTEGER :: iaer
49      CHARACTER(LEN=20) :: txt
50      INTEGER,SAVE :: iaerdust(naerkind)
51      INTEGER,SAVE :: naerdust ! number of dust scatterers
52
53      (...blablablabla)
54
55      IF (firstcall) THEN
56        naerdust=0
57        DO iaer=1,naerkind
58          txt=name_iaer(iaer)
59          IF (txt(1:4).eq."dust") THEN
60            naerdust=naerdust+1
61            iaerdust(naerdust)=iaer
62          ENDIF
63        ENDDO
64      ENDIF
65-------------------------------------------------------------
66
67Et ensuite en toute rigueur encore une fois il faut sommer les taus des différents scatterers poussières dans la partie slope de ton code:
68
69-------------------------------------------------------------
70      DO ig=1,ngrid
71        DO l=1,2
72          (...blabla yeah blabla)
73          sl_tau = 0.
74          DO iaer=1,naerdust
75            sl_tau = sl_tau + tau(ig,iaerdust(iaer))
76          ENDDO
77          (...blabla yeah)
78        ENDDO
79      ENDDO
80-------------------------------------------------------------
81
82
83-f total. enlever Registry et faire Regitry.bash ne sufit pas. sinon il met un
84e erreur absurde avec le fait que les dx ne matchent pas.
85
86
87********************************* compilation API
88Il fallait faire trois choses:
891) Spécifier le chemin vers la librairie NetCDF grâce à l'option --include-paths de f2py, autrement dit ajouter:
90--include-paths $NETCDF/include:$NETCDF/lib
912) Ceci entrainait un bug:
92"readfortrancode: could not find include file" car une partie de la routine crackfortran.py du paquet EPD était mal écrite; j'ai installé la nouvelle version de EPD (7.2) et ce premier problème fut écarté car ils ont corrigé les lignes correspondantes dans crackfortran.py;
933) Autre bug:
94"libnetcdf.a: could not read symbols: Bad value > collect2"
95L'ajoût de l'option --with-pic lors de la compilation de NetCDF résout le problème. Autrement dit, il faut faire:
96./configure --with-pic ...
97Cette option permet de créer un "position independent code, needed for shared libraries". Je ne comprends pas exactement ce que ça veut dire, mais maintenant ça marche!
98*******************************
99
100NE PASE UTILISER NOMBRES NEGATIFS DANS LE CAS HILL !!!!
101>>> OK
102
103il faudrait parler du staggering U et V et de sa solution avec api
104
105pour les trucs octave il faut executer dans octave en interactif
106
107https://bi.offis.de/wisent/tiki-index.php?page=WRF-gFortran
108
109
110
111solved with openMPI !!!!
112beware of use of openMPI with NFS
113faster with local disks
114
115NOUVELLE FERME
116- OK avec pgf_64_single
117- OK avec mpi_64 sur 1 proc
118- pas OK avec mpi_64 et 4 proc
119  cas Hellas crashe entre la sortie 9 et 10
120  .... fastsse ou pas ne change rien [mpich fast dans les deux cas]
121  .... changer radt ne fait que retarder
122  .... baisser le pas de temps pose probleme plus tot
123  .... ne marche pas en phasant les options WRF avec les options LMD physics
124  .... avec fastsse partout (mm MPI), crash ds la sortie 2
125  .... option de base SVN avec mpich sans fast, marche pas non plus crashe entre 9 et 10
126  .... iradia=1 ne change rien, toujours le probleme
127  .... la simulation tourne lorsqu'on fait callrad = F
128  .... test avec Mbounds ne renvoie aucuune erreur
129  .... test avec juste -Ktrap=fp et rien d'autre renvoie aucune erreur
130  .... semble OK avec iaervar=1, probleme dans meso_dustopacity ??? ou avec la lecture NETCDF ???
131  .... crashe direct avec WHERE_MPI=/donnees/aslmd/MPI/mpich2-1.3.1_normal/bin
132  .... alors que ca passe nickel avec iaervar=1
133  .... crashe direct avec mes librairies netcdf3.6.1 compilees avec le dernier pgf2011
134  .... ne crashe pas direct avec mes librairies netcdf4.0.1 compilees avec le
135         dernier pgf2011 et les options utilisees dans le modele ajoutees aux options
136         dans la librairie compilee dans /distrib/local
137       mais crashe entre la sortie 9 et 10 comme les autres !!!!
138  .... marche bien aussi avec iaervar=3... probleme de lecture netcdf ???
139  .... experience: on a iaervar=4 mais juste apres readtesassim
140       on regle tauref a 0.3 et ca passe. donc ce n est pas un bug structurel.
141       les valeurs lues ne sont probablement les bonnes soit par probleme
142       dans le fichier soit par probleme structurel dans readtesassim
143  .... pourtant en affichant les valeurs on ne voit pas de pb particulier !
144  .... en changeant le nom hfx en sensheat et en enlevant z0 qui pose un pb
145       avec l'ancienne physique, ca ne marche toujours pas.
146  .... crash: semble stocker les variables qui sortent de la physique OK
147       mais le reste, par exemple tsurf, est NaN c'est bizarre
148  .... avec ndomainsz=ngridmx le modele va plus loin et crashe le second jour
149       a la sortie 2
150  .... mm comportement sur ulrich que sur penn
151  .... avec mcmodel crashe tout de suite
152  .... idem en invalidant les options d optimisation dans WRF et LMD phys [non en fait il faut enlever dans MPI]
153  .... test avec netcdf3: marche pas. mais ne faut-il pas enlever toutes les options?
154  .... avec aucune option d'optimisation et netcdf3: Nan avant la sortie 2
155  .... avec aucune option d'optimisation et netcdf4: va plus loin mais NaN entre 9 et 10
156  .... options d'optimisation en -O3 toujours le mm probleme
157  .... toujours le mm probleme mm avec ulimit -s unlimited
158
159  .... test qui donne des sortie 2 des NaN en recompilant avec -fast partout
160       avec mpirun -np 1, aucun souci tout va bien
161       avec mpirun -np 8, souci egalement des la sortie 2
162       ... visiblement un souci avec readtesassim ???
163       .... MAIS NON CAR SOUCI AUSSI AVEC iaervar=1 avec 8 procs
164       .... ALORS QUE PAS DE SOUCI AVEC iaervar=1 avec 4 procs
165export NETCDF=/donnees/aslmd/MODELES/MESOSCALE_DEV/NETCDF/pgfortran_64_netcdf-4.0.1_fast
166export WHERE_MPI=/donnees/aslmd/MPI/pgfortran_mpich2-1.3.1/bin
167  .... corrections readtesassim ne semblent rien changer...
168  .... sorties frequentes permettent de voir que le probleme est localisee
169       mais rempli tres vite le domaine
170       avec dt=40s probleme apparait au bout de 700s
171       avec dt=10s probleme apparait au bout de 300s
172       avec dt=100s problemen apparait au bout de 1200s
173       ... visiblement le probleme apparait aux jointures des domaines ?
174       ... probleme sur le vitesse verticale calculee ???
175       ... visiblement non puisque mm comportement avec non_hydrostatic ou W est normal
176       ... apparemment il s'agit vraiment d'une instabilite numerique
177       ... mettre les tendances R..BLEN a 0 ne change rien...
178       ... changer dimradmars n'arrange pas en fait lorsquon met des sorties frequentes
179       ... bizarre un des 4 processes wrf.exe passe en D quelques fois ????
180... ne marche pas avec les options de compilation de WRF3 !!!
181     (mais domain met moins de temps a compiler)
182... toujours le mm probleme en acces local disque
183
184... mpich compile sans fast crash entre sortie 1 et 2
185    mpich compile avec fast crash entre sortie 9 et 10
186... mpich2-1.4.1 compile avec fast crash entre sortie 9 et 10
187
188
189TEST AVEC DEBUG
190  .... s'arrete au beau milieu d integrations sans sortir de message d'erreur
191TEST AVEC LES POUR VOIR SI PB CORRIGE AVEC WRF3
192  .... rsl_lite ne compile pas avec l'option -fast
193  .... OK avec nofast_nemesis version compilee de mpich2
194TEST avec le vieux mpich2... CRASH aussi entre la sortie 9 et 10
195
196memes erreurs avec RSL_LITE de WRF3
197alors qu il compile sans souci chez LES
198.... un probleme d'options de compilations ????
199.... pendre direct la librairie compilee chez WRF3 ???
200LES: run OK
201juste des NaN a la toute fin...
202
203peut etre faut il regler dans WRFV2 les warnings relies a la compilation de rsl_lite
204------- il y a probablement des choses a corriger
205------- coupler avec gcc [-CC=gcc] comme dans LES ????
206.... mais lorsqu on utilise le vieux mpi compile avec pgf7 pas de warnings !
207
208
209...le debugger voir une floating exception sur lwtt dans la boucle avec kdlon
210...avec les options debug le modele semble aller loin OK --> a verifier??
211...les warnins a la compilation ont ils de l importance ?
212...le fait que netcdf4 ne soit pas supporte ???
213...longue compil sur module_domain....
214
215...des pistes ici
216http://www.mmm.ucar.edu/wrf/users/wrfv3/known-prob-3.0.1.html
217
218fonctionne avec le vieux mpi dans pgf2011 [et netcdf4]
219mais les jobs ne sont pas a 100% sur les procs
220probleme donc... c est tres lent
221
222test basique avec WRFV2.2.1 et le cas em_quarter_ss et mpipgf
223memes resultats avec un proc ou plusieurs
224pas de crash
225
226
227---------------------------------------------------------------------------------
228
229--- sur nouvelles machines problemes run parallele avec nouvelle physique
230
231--- makegcm_g95 ne marche pas avec -no-second-underscore
232    marche sans et semble compiler correctement
233    ne compile pas les exec avec mais OK pour liblmd.a
234
235--- conflits quelque soit la combinaison (f-no-second-underscore ou pas) lors
236de la compilation du dynamical core WRF avec g95 64 bits
237http://forum.wrfforum.com/viewtopic.php?f=5&t=3467
238
239--- absurde: fonctionne avec les librairies NETCDF gfortran compilees par
240Ehouarn sur auric
241et en remplacant readtesassim par le vieux readtesassim
242dans ce cas meme testphys1d.e compile correctement
243... il y a quelques erreurs netcdf dans la physique visiblement ss conseq [testphys1d compile....]
244... surveiller tout de meme, en rapport avec ncf90
245... faut-il enlever #include netcdf.inc dans readtesassim soit dit en passant?
246
247
248gfortran https://bi.offis.de/wisent/tiki-index.php?page=WRF-gFortran
249---> MAIS GROS PROBLEMES (time mgmt and seg fault)
250
251
252cc-----------------------------------
253cc you can still use meso_WRITEDIAGFI (e.g. for debugging purpose),
254cc though this is not the default strategy now
255cc-----------------------------------
256cc please use cudt in namelist.input to set frequency of outputs
257cc-----------------------------------
258cc BEWARE: if at least one call to meso_WRITEDIAGFI is performed,
259cc cudt cannot be 0 - otherwise you'll get a "Floating exception"
260cc-----------------------------------         
261!      call meso_WRITEDIAGFI(ngrid,"tauref",
262!     .  "tauref","W.m-2",2,
263!     .       tauref)
264!      call meso_WRITEDIAGFI(ngrid,"zt",
265!     .  "zt","W.m-2",3,
266!     .       zt)
267!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
268!!!!! note WRF MESOSCALE AYMERIC -- mot cle "caps"
269!!!!! watercaptag n'est plus utilise que dans vdifc
270!!!!! ... pour que la sublimation ne soit pas stoppee
271!!!!! ... dans la calotte permanente nord si qsurf=0
272!!!!! on desire garder cet effet regle par caps=T
273!!!!! on a donc commente "if (caps.and.(obliquit.lt.27.))" ci-dessus
274!!!!! --- remplacer ces lignes par qqch de plus approprie
275!!!!!      si on s attaque a la calotte polaire sud
276!!!!! pas d'autre occurrence majeure du mot-cle "caps"
277!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
278
279
280kvdif ne sert a rien dans le mesoscale martien, en raison de l'appel a la
281physique et MY
282
283Venus_est_dans_SOURCES_FORTRAN
284
285adapter runmeso pour les runs ideal et les ???
286
287faire comme storm mais avec les pour eviter les recouvrements
288user manual
289
290changer la gestion topo dans LES comme fait dans modele general
291
292        13min_si_Registry_modifie     
293        15min_makemeso_moins_f       
294        1min_phys_plus_dyn_chgtresol 
295
296        PD_SCALAR est T par defaut desormais !!
297
298
299        il faudrait regler le prob du Registry dans le LES
300il y a un souci avec les variables liees a l'eau et d'autres
301
302        ---anciennes notes lES sur gnome pb avec ideal.exe
303        ## jusque 201 OK avec ideal.exe sequentiel
304        ## ensuite il vaut mieux utiliser
305        ## mpirun -n 4 ideal.exe
306        ## le MP_STACK_SIZE est dans le bashrc
307
308
309
310concat.e puis localtime.e puis
311localtime.e (tres long) puis concatnc.e pour avoir en ls
312le resultat doit etre strider a 10... sinon bug affichage
313
314ncwa -O -v mtot,icetot -a longitude -d longitude,-179.0,179.0 diagfi.nc yeye.nc
315ncwa -O -v mtot -a longitude -d longitude,-180.0,180.0 concat_LT.nc mawd.nc
316(si trop gros faire ncrcat -v mtot -d Time,,,2 concat_LT.nc yorgl.nc)
317
318resumee
319--> localtime.e tres long
320--> concatnc.e en ls tres court
321--> renomme le fichier
322--> ncwa -O -v mtot,Time -a longitude -d longitude,-180.0,180.0 gcm_LT14_a035.nc mawd_a035.nc
323
324        A FAIRE:::: mettre des flags precompilo dans les meso_
325        les reporter dans makegcm
326
327changer le renormalisation dans aeropacity ????
328on ne laisse pas aerosol comme le lifting veut qu'il soit !
329tenter des taux de soulevement pour que taudust_tmp soit les obs
330en prescivant une dust bomb fixe d opacite, on aura au moins la structure verticale
331
332        tester traceurs radiativement actifs avec la nouvelle physique ?????
333
334        A FAIRE: PB LES sur iDATAPLEX (les points HFX nuls) (pas de soucis sur ciclad)
335METTRE SUR LE svn LA BASE d'ETATS INITIAUX ????
336
337more than 4 procs w/ nest ??? y reflechir
338        -----------------------------------------------------------------------
339        -- si possible comment determiner taille ?
340        nproc doit diviser e_we-1 (1er nest)
341        grid_ratio doit diviser e_we-1 +4 (1er nest)
342        soit e_we=ye+1
343        grid_ratio divise ye+4 et nproc divise ye
344        soit nproc=8, ye=8*i
345        ainsi il existe j tel que 8i + 4 = 3j ou encore 4*[2i+1] = 3j
346        verifie par exemple si 2i+1 est multiple de 3
347        il suffit donc de trouver un multiple impair de 3 et de deduire i
348        par exemple 2i+1=33 >>>> i=16
349        >>>> e_we = 129 pour le 1er nest (et ajouter 4 pour les suivants)
350        ------------------------------------------------------------------------
351
352        ne pas utiliser le FASTCASE avec traceurs (instabilites en haut)
353            ces instabilites sont cependant reglees si on augmente radt a 10 par exemple
354
355        pour le cycle de l'eau c'est OK de regler caps=F dans le mesoscale
356        sauf si on commence a devoiler la calotte permanente nord
357        ---> corrige, scenario caps specifique au mesoscale
358
359        NE SERAIT-CE PAS MIEUX DE TOUT TRANSMETTRE AUX BORNES ???
360        tous les traceurs, pas seulement vapor
361
362
363        - attention il faut les trois MARS sinon il s arrete sans message clair
364        - attention a ne pas lancer le modele s il est deja lance
365        - important que pd_scalar soit a T ... le mettre par defaut ????
366
367
368ROUTINES a AJOUTER sont dans COMMON_GCM
369- passer aux nouveaux makegcm [en commun avec Ehouarn si on veut le nouveau
370  readtesassim qui est en F90]
371- il faut tester le nest pour verifier les lignes trop longues
372
373        (ok) lier gr_fi_dyn qui est dans dyn3d
374        (ok) regler le pb du nouveau readtesassim (ou alors le lier tout simplement ou
375          l'appeler meso_readtesassim)
376        (ok) regler le pb meso_dustlift (le lier dans makemeso comme point precedent)
377             (car le souci c que dustlift est appele dans vdifc)
378
379        [c fait normalement]
380        RESTE a ADAPTER le LES a la NOUVELLE PHYSIQUE
381        il y a normalement peu a faire
382        reste a faire egalement le -DNEWPHYS pour le LES
383
384        attention pb d'affichage des valeurs dans le fichier texte avec LES ???
385        bien que les valeurs du fichier soient tout a fait raisonnables
386        ... n'est-ce pas un effet de bord cache ????
387
388
389        apres fusion, le LES est reconnu par module_lmd_driver lorsque diff_opt=2 km_opt=2
390
391
392        -attention PB si on ne sort pas HFX et USTM (note dans le Registry)
393        -il faut run.def nouvelle physique [c est meme ce qui est utilise par runmeso]
394        - IL FAUT SE PENCHER SUR LE FAIT QU'ON INDIQUE q2val=0 dans lmd_driver ....
395
396-----------------------
397ATTENTION NOUVELLE PHYSIQUE
398Oui, c'est quelque chose qu'il faut probablement changer partout
399maintenant que la version de pgf90 à changé (sur les machines du LMD).
400Avec cette nouvelle version (7.1-6), le '-fast' est plus agressif
401qu'avant (et inclue entre autre les horribles '-Mvect=sse -Mscalarsse'
402qui dégradent la précision de certains calculs pour accélérer le code);
403je préconise de ne plus s'en servir. Bon d'accord, je n'ai pas fait une
404étude approfondie de l'impact de '-fast', mais j'ai vu qu'avec,
405j'obtenais des résultats différents lorsque je changeais simplement
406l'ordre des traceurs...
407
408Aymeric Spiga wrote:
409> je détecte ces changements d'option de compilation ; ont-ils de
410> l'importance ?
411>
412> Aymeric
413>
414> < #   set optim90=" -fast"
415> < #   set optimtru90=" -fast -c -Mfree "
416> < #   set optim90=" -O2 -Munroll=c:1 -Mnoframe -Mcache_align"
417> < #   set optimtru90=" -O2 -Munroll=c:1 -Mnoframe -Mcache_align"
418> <    set optim90=" -O2 -Munroll -Mcache_align"
419> <    set optimtru90=" -O2 -Munroll -Mcache_align"
420> ---
421>   
422>>    set optim90=" -fast"
423>>    set optimtru90=" -fast -c -Mfree "
424------------------------------
425
426
427        - attention a cp et R, normaliser une bonne fois pour toutes
428        - il manque sur le SVN les cas idealises
429- il manque sur le SVN les scripts MPI
430        - il faut recompiler les librairies NETCDF
431        - mettre la nouvelle physique
432        - mettre les DEF du meso-echelle
433
434        - modele ok sur auric
435- modele pas ok sur ciclad avec pgf2010, erreur inedite un seul module manquant
436        - modele LES OK sur ciclad
437        - modele LES ok sur auric
438
439        24/01/2011
440        tests g95 en 64bits natif sur systeme Linux
441        -- modifications de makemeso, tests
442        -- tout est OK sauf les libraires NETCDF, probleme d'underscore
443        -- OK avec libraires maison compilees avec g95 standard sur flores [et tourne OK]
444
445
446
447        mpi_64_pgf7_ncdf4_mpi1.2.txt
448        - probleme lors de la compilation de solve_em : LINUX runs out of memory [huchard]
449        - IL FAUT COMPILER SUR auric
450        nougaro est lent a la compilation, utiliser surtout auric
451
452
453
454
455______________________________________________________
456
457
458PB MPI
459/donnees/aslmd/MODELES/MPI/mpich2-1.2.1p1_PGF7/lib/libmpich.a(simple_pmi.o):
460In function `PMI_Init':
461simple_pmi.c:(.text+0x15c0): warning: Using 'gethostbyname' in statically
462linked applications requires at runtime the shared libraries from the glibc
463version used for linking
464/donnees/aslmd/MODELES/MPI/mpich2-1.2.1p1_PGF7/lib/libmpich.a(simple_pmi.o):
465In function `PMI_Init':
466simple_pmi.c:(.text+0x15c0): warning: Using 'gethostbyname' in statically
467linked applications requires at runtime the shared libraries from the glibc
468version used for linking
469/donnees/aslmd/MODELES/MPI/mpich2-1.2.1p1_PGF7/lib/libmpich.a(simple_pmi.o):
470In function `PMI_Init':
471simple_pmi.c:(.text+0x15c0): warning: Using 'gethostbyname' in statically
472linked applications requires at runtime the shared libraries from the glibc
473version used for linking
474/donnees/aslmd/MODELES/MPI/mpich2-1.2.1p1_PGF7/lib/libmpich.a(simple_pmi.o):
475In function `PMI_Init':
476simple_pmi.c:(.text+0x15c0): warning: Using 'gethostbyname' in statically
477linked applications requires at runtime the shared libraries from the glibc
478version used for linking
479
480
481POSSIBLE mars.sed
482
483s+ *../frame/module_internal_header_util.o ../frame/pack_utils.o
484-L../external/esmf_time_f90 -lesmf_time+& -L../mars_lmd/libo -llmd
485-Mmpi=mpich2+g
486
Note: See TracBrowser for help on using the repository browser.