Opened 11 years ago

Closed 11 years ago

#11 closed defect (fixed)

Problem with src_global/intersurf_help/aggregate_vec: Failure Olson classification-> PFT map

Reported by: maignan Owned by: somebody
Priority: major Milestone: orchidee_1_9_6
Component: Driver files Version: orchidee_1_9_5_2
Keywords: Olson, PFT map Cc:

Description

Fabienne 30/03/2012

Penser a verifier les autres aggregate.

Jan 30/03/2012

Si tu passes à la nouvelle version de aggregate_vec, il faut supprimer les itérations qui sont autour des appels et mettre les bonnes estimations de l'espace mémoire nécessaire ...
Tout cela est la branche hydro.

Fabienne 30/03/2012

J'ai fait un test avec le fichier intersurf_help.f90 de la branche Hydrology comme suggere par Jan et il n'y a pas de bug effectivement dans cette version.
On peut donc aussi  corriger le bug du tag actuel en basculant sur votre version (il faut rajouter une constante mincos dans constantes.f90).

Fabienne 27/03/2012

slowproc_interpol_NEW_g (release 1.9.5.2) fait appel a aggregate_vec dans
src_global/interpol_help.f90. La on passe dans loopnbind (nombre de pixels
5km > nombre de boites 0.72) : le probleme est que ib (le numero de la
boite) n'est jamais incremente dans cette boucle, les lignes
IF ( .NOT. found ) THEN
          ! We need to step on in the coarse grid
          ib = ib + 1
          IF ( ib > nbpt ) ib = ib-nbpt
          !
ENDIF
se trouvent a l'exterieur de la boucle alors qu'elles devraient etre dans
la boucle DO WHILE ( .NOT. found .AND. j<=nbpt ) juste avant le ENDDO.

En consequence aucun pixel 5km n'est affecte aux boites ib>1 dans
aggregate_vec et slowproc_interpol_NEW_g leur affecte donc le plus proche
voisin.

Change History (2)

comment:1 Changed 11 years ago by mmaipsl

Effectivement c'est un vieux bug qui traine dans les vieilles versions de aggregate_vec
que j'ai rajouté à la version CVS 1.5 :
http://forge.ipsl.jussieu.fr/orchidee/viewvc/ORCHIDEE/src_global/interpol_help.f90?root=orchidee&r1=1.5&r2=1.6
Je n'ai malheureusement pas vu ce problème avant. Il existe bien depuis la version orchidee_1_9_5 (AR5 donc) :
http://forge.ipsl.jussieu.fr/orchidee/viewvc/ORCHIDEE/src_global/interpol_help.f90?root=orchidee&r1=1.7&r2=1.8
https://forge.ipsl.jussieu.fr/orchidee/changeset?old_path=%2Ftags%2FORCHIDEE_1_9_5_2%2FORCHIDEE%2Fsrc_global%2Finterpol_help.f90&old=816&new_path=%2Ftags%2FORCHIDEE_1_9_5%2FORCHIDEE%2Fsrc_global%2Finterpol_help.f90&new=816

Merci Fabienne de l'avoir retrouvé [[BR]]
La nouvelle version de aggregate_vec revue par Jan doit effectivement être mergé dans le trunk
car il a supprimé la boucle interne while, ce qui le rend - en plus d'être correct - beaucoup
plus efficace. Les différences entre ces deux modules sont minimes car celui de la nouvelle hydrologie a déjà été mis à jour.
https://forge.ipsl.jussieu.fr/orchidee/changeset?old_path=%2Fbranches%2FHydrology%2FORCHIDEE%2Fsrc_global%2Finterpol_help.f90&old=816&new_path=%2Ftags%2FORCHIDEE_1_9_5_2%2FORCHIDEE%2Fsrc_global%2Finterpol_help.f90&new=816
La principale différence est bien le mincos qui a été déplacé dans constantes.f90

./src_parameters/constantes.f90
38:  REAL(r_std), PARAMETER                          :: mincos  = 0.0001

pour être réutilisé dans les autres modules

./src_sechiba/slowproc.f90
2256:          coslat = MAX( COS( lat(ip,jp) * pi/180. ), mincos )     
4459:          coslat = MAX( COS( lat_rel(ip,jp) * pi/180. ), mincos )     
5029:          coslat = MAX( COS( lat_rel(ip,jp) * pi/180. ), mincos )     
./src_sechiba/routing.f90
3523:          coslat = MAX( COS( lat_rel(ip,jp) * pi/180. ), mincos )     
6834:          coslat = MAX( COS( latrel(ip,jp) * pi/180. ), mincos )     
./src_global/interpol_help.f90
213:    coslat = MAX(COS(lalo(minLon(1),1) * pi/180. ), mincos )*pi/180. * R_Earth
216:    coslat = MAX(COS(lalo(maxLon(1),1) * pi/180. ), mincos )*pi/180. * R_Earth
292:       coslat = MAX(COS(lalo(ib,1) * pi/180. ), mincos )*pi/180. * R_Earth
373:                   coslat = MAX( COS( lat_rel(ip,jp) * pi/180. ), mincos )
523:    coslat = MAX(COS(lalo(ff(1),1) * pi/180. ), mincos )*pi/180. * R_Earth
526:    coslat = MAX(COS(lalo(ff(1),1) * pi/180. ), mincos )*pi/180. * R_Earth
536:    coslat = MAX(COS(lalo(ff(1),1) * pi/180. ), mincos )*pi/180. * R_Earth
576:       coslat = MAX(COS(lalo(ib,1) * pi/180. ), mincos )*pi/180. * R_Earth
610:          coslat = MAX(COS(lat_rel(ip) * pi/180. ), mincos )*pi/180. * R_Earth
646:       coslat = MAX(COS(lat_rel(ip) * pi/180. ), mincos )*pi/180. * R_Earth
699:             coslat = MAX(COS(lalo(ib,1) * pi/180. ), mincos )*pi/180. * R_Earth
729:                      coslat = MAX( COS( lat_rel(ip) * pi/180. ), mincos )

Martial

comment:2 Changed 11 years ago by dsolyga

  • Resolution set to fixed
  • Status changed from new to closed

With Fabienne Maignan and Nicolas Vuichard, we agreed to merge the new interpolation from the hydrology branch and unify the mincos values.
Work done :

  • Merge interpol_help from hydrology branch into the trunk.
  • All the interpolations processes share the same mincos value (0,0001).

A comparison with the previous interpolation showed no significant differences (epsilon machine order).
See [836]

Note: See TracTickets for help on using tickets.