Changes between Version 1 and Version 2 of DevelopmentActivities/MergeHydro/Interpolation_note


Ignore:
Timestamp:
11/07/11 11:48:00 (10 years ago)
Author:
mmaipsl
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DevelopmentActivities/MergeHydro/Interpolation_note

    v1 v2  
    1 = Interpolation Improvments = 
     1= Amélioration de l'interpolation = 
    22 
    33== Description == 
     4Réduire les temps de projection des cartes en entrée du modèle ORCHIDEE. 
     5Cette réduction est particulièrement nécessaire lorsque le forçage (et donc le modèle) ont des grilles très fines.   
    46 
    5 == Affected modules == 
     7== Modules affectés == 
     8Dans ORCHIDEE, pluiseurs modules contiennent des projections : 
     9 * slowproc, 4 projections : vegetation (5kms vector map and 2D LAND USE maps), LAI, soil texture.  
     10 * condveg : soil color 
     11 * routing : rivers, irrigations and floodplains 
     12 * stomate_io (fonction get_reftemp) 
     13 
     14Pour l'instant, seuls les trois premiers ont été améliorés. 
     15 
     16La normalisation de la carte de LAI introduite dans la version LMD a été commentée car tant que l'on a pas travaillé sur les llaimax/llaimin, 
     17elle supprime la variation saisonnière des PFTs 2,4,5 et 7. 
     18Voyez la note [wiki:Branches/MergeHydro/lai_note#NotedeMartialsurleLAI] pour la justification. 
    619 
    720== Programmation == 
    821 
     22Calcul de la résolution de chaque point de la carte lue en latitude et longitude : 
     23{{{ 
     24          ! Resolution in longitude 
     25          ! 
     26          coslat = MAX( COS( lat(ip,jp) * pi/180. ), mincos )      
     27          IF ( ip .EQ. 1 ) THEN 
     28             resol_lu(ip,jp,1) = ABS( lon(ip+1,jp) - lon(ip,jp) ) * pi/180. * R_Earth * coslat 
     29          ELSEIF ( ip .EQ. iml ) THEN 
     30             resol_lu(ip,jp,1) = ABS( lon(ip,jp) - lon(ip-1,jp) ) * pi/180. * R_Earth * coslat 
     31          ELSE 
     32             resol_lu(ip,jp,1) = ABS( lon(ip+1,jp) - lon(ip-1,jp) )/2. * pi/180. * R_Earth * coslat 
     33          ENDIF 
     34          ! 
     35          ! Resolution in latitude 
     36          ! 
     37          IF ( jp .EQ. 1 ) THEN 
     38             resol_lu(ip,jp,2) = ABS( lat(ip,jp) - lat(ip,jp+1) ) * pi/180. * R_Earth 
     39          ELSEIF ( jp .EQ. jml ) THEN 
     40             resol_lu(ip,jp,2) = ABS( lat(ip,jp-1) - lat(ip,jp) ) * pi/180. * R_Earth 
     41          ELSE 
     42             resol_lu(ip,jp,2) =  ABS( lat(ip,jp-1) - lat(ip,jp+1) )/2. * pi/180. * R_Earth 
     43          ENDIF 
     44          ! 
     45}}} 
     46Au lieu de fixer arbitrairement un nombre maximum de recouvrement des points de la grille de la carte lue par rapport aux points 
     47de la grille du modèle (nbvmax), on calcule une valeur précise : 
     48{{{ 
     49     ! The number of maximum vegetation map points in the GCM grid is estimated. 
     50    ! Some lmargin is taken. 
     51    ! 
     52    IF (is_root_prc) THEN 
     53       nix=INT(MAXVAL(resolution_g(:,1))/MAXVAL(resol_lu(:,:,1)))+2 
     54       njx=INT(MAXVAL(resolution_g(:,2))/MAXVAL(resol_lu(:,:,2)))+2 
     55       nbvmax = nix*njx 
     56    ENDIF 
     57    CALL bcast(nbvmax) 
     58}}} 
     59 
     60Après vérification avec un nombre important de correspondances carte/grille de modèle (dont des sites), on pourra supprimer la  
     61boucle sur les interpolations utilisées auparavant pour éviter l'arrêt du modèle lorsque les nbvmax était définit avec des valeurs 
     62trop petites : 
     63{{{ 
     64    ok_interpol = .FALSE. 
     65    DO WHILE ( .NOT. ok_interpol ) 
     66[...] 
     67       IF ( .NOT. ok_interpol ) THEN 
     68          DEALLOCATE(sub_area) 
     69          DEALLOCATE(sub_index) 
     70       ENDIF 
     71       ! 
     72       nbvmax = nbvmax * 2 
     73    ENDDO 
     74}}} 
     75 
     76La procédure get_reftemp doit être réécrite pour utiliser la projection de interpol_help et cette optimisation. 
     77 
    978== tests ==  
     79 
     80Vérifier que les projections ne sont pas modifiées et évaluer les impacts sur les résultats du modèle en cas de changement (SPINUP et run historique).