Changeset 52


Ignore:
Timestamp:
Jan 31, 2011, 12:42:42 AM (14 years ago)
Author:
aslmd
Message:

chantier principal du commit
--- version LMDZ5 qui fonctionne pour tests geantes
--- prochaine etape, tests sur GNOME

M libf/dyn3dpar/comconst.h
M libf/dyn3dpar/conf_planete.F90
ajout du flux de chaleur intrinseque: ihf
[par defaut il est nul]

M libf/dyn3dpar/gcm.F
changements cosmetiques
[pour diff plus efficace avec version non par]

M libf/dyn3dpar/iniacademic.F
possibilites de variations latitudinales
de temperature plus originales
[seulement pour planet_type.eq."giant"]

M libf/dyn3dpar/leapfrog_p.F

  1. ajout d'une tendance causee par le flux de chaleur intrinseque

(seulement prise en compte si planet_type.eq."giant")

  1. correction bugs problematiques a la compilation et au run

--> probleme dans les boucles (l'indice etait llm et non l)
--> ajout de SAVE pour les variables paralleles
--> correction des declarations de variables manquantes

M libf/dyn3dpar/calfis_p.F
correction d'une deuxieme parenthese manquante sur ALLOCATE(zteta(klon,llm))

M libf/phylmd/regr_lat_time_climoz_m.F90
erreur a la compilation avec FCM... il s'agit d'une routine terrestre
il y a visiblement un probleme avec o3_in
en attendant, les lignes sont commentees avec !AS

A deftanks/giant 8 fichiers
ajout de fichiers de configuration typiques pour les geantes gazeuses
[experimental pour le moment... on est loin de jupiter]

--> comparaisons entre un run ancien [avec LMDZ5-dev sur SVN ipsl sans cp var]
et run avec version sur ce SVN planeto donne des resultats similaires

pratique

A ioipsl
A ioipsl/compile_ioipsl.bash
A ioipsl/util 16 fichiers
script et utilitaire pour compiler IOIPSL de facon independante
il suffit d'executer ./compile_ioipsl.bash

M arch/arch-AMD64_CICLAD.path
si IOIPSL a ete compile avec la methode precedente, les bons
PATH sont definis dans ce fichier [le NETCDF est aussi OK]

M 000-README-svn
mise a jour options "svn status"

M mars/libf/phymars/meso_callkeys.h
mise a jour mineure du fichier
[ecri_phys etait defini mais pas dans la liste]

Location:
trunk
Files:
28 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/000-README-svn

    r42 r52  
    3434-- pour verifier les fichiers modifies, ajoutes, etc... avant un commit faire
    3535                svn status
     36                svn status -qu  [pour enlever les cas "?"]
    3637
    3738-- si vous etes perdus, faites
  • trunk/arch/arch-AMD64_CICLAD.path

    r1 r52  
    11NETCDF_LIBDIR=/opt/netcdf/pgf/lib
    22NETCDF_INCDIR=/opt/netcdf/pgf/include
    3 IOIPSL_INCDIR=$LMDGCM/../../lib
    4 IOIPSL_LIBDIR=$LMDGCM/../../lib
     3IOIPSL_INCDIR=$trunk/ioipsl/lib
     4IOIPSL_LIBDIR=$trunk/ioipsl/lib
    55ORCH_INCDIR=$LMDGCM/../../lib
    66ORCH_LIBDIR=$LMDGCM/../../lib
  • trunk/chantiers/commit_importants.log

    r51 r52  
    329329* Reste a tester le nesting qui devrait induire des modifications dues a des lignes trop longues... ce sera transparent du point de vue GCM.
    330330
    331 
     331********************
     332**** commit_v52 ****
     333********************
     334
     335********** chantier principal du commit
     336********** --- version LMDZ5 qui fonctionne pour tests geantes
     337********** --- prochaine etape, tests sur GNOME
     338
     339M      libf/dyn3dpar/comconst.h
     340M      libf/dyn3dpar/conf_planete.F90
     341ajout du flux de chaleur intrinseque: ihf
     342[par defaut il est nul]
     343
     344M      libf/dyn3dpar/gcm.F
     345changements cosmetiques
     346[pour diff plus efficace avec version non par]
     347
     348M      libf/dyn3dpar/iniacademic.F
     349possibilites de variations latitudinales
     350de temperature plus originales
     351[seulement pour planet_type.eq."giant"]
     352
     353M      libf/dyn3dpar/leapfrog_p.F
     3541. ajout d'une tendance causee par le flux de chaleur intrinseque
     355      (seulement prise en compte si planet_type.eq."giant")
     3562. correction bugs problematiques a la compilation et au run
     357--> probleme dans les boucles (l'indice etait llm et non l)
     358--> ajout de SAVE pour les variables paralleles
     359--> correction des declarations de variables manquantes
     360
     361M      libf/dyn3dpar/calfis_p.F
     362correction d'une deuxieme parenthese manquante sur ALLOCATE(zteta(klon,llm))
     363
     364M      libf/phylmd/regr_lat_time_climoz_m.F90
     365erreur a la compilation avec FCM... il s'agit d'une routine terrestre
     366il y a visiblement un probleme avec o3_in
     367en attendant, les lignes sont commentees avec !AS
     368
     369A      deftanks/giant  8 fichiers
     370ajout de fichiers de configuration typiques pour les geantes gazeuses
     371[experimental pour le moment... on est loin de jupiter]
     372       --> comparaisons entre un run ancien [avec LMDZ5-dev sur SVN ipsl sans cp var]
     373       et run avec version sur ce SVN planeto donne des resultats similaires
     374
     375********** pratique
     376
     377A      ioipsl
     378A      ioipsl/compile_ioipsl.bash
     379A      ioipsl/util 16 fichiers
     380script et utilitaire pour compiler IOIPSL de facon independante
     381il suffit d'executer ./compile_ioipsl.bash
     382
     383M      arch/arch-AMD64_CICLAD.path
     384si IOIPSL a ete compile avec la methode precedente, les bons
     385PATH sont definis dans ce fichier [le NETCDF est aussi OK]
     386
     387M      000-README-svn
     388mise a jour options "svn status"
     389
     390M      mars/libf/phymars/meso_callkeys.h
     391mise a jour mineure du fichier
     392[ecri_phys etait defini mais pas dans la liste]
  • trunk/libf/dyn3dpar/calfis_p.F

    r8 r52  
    288288      ALLOCATE(flxwfi(klon,llm))
    289289! ADAPTATION GCM POUR CP(T)
    290       ALLOCATE(zteta(klon,llm)
     290      ALLOCATE(zteta(klon,llm))
    291291      ALLOCATE(zpk(klon,llm))
    292292c$OMP END MASTER
  • trunk/libf/dyn3dpar/comconst.h

    r8 r52  
    1111     &                   ,dissip_factz,dissip_deltaz,dissip_zref        &
    1212     &                   ,tau_top_bound,                                &
    13      & daylen,year_day,molmass
     13     & daylen,year_day,molmass, ihf
    1414      COMMON/cpdetvenus/nu_venus,t0_venus
    1515
     
    3636
    3737      REAL nu_venus,t0_venus ! coeffs needed for Cp(T), Venus atmosphere
     38      REAL ihf  ! (W/m2) intrinsic heat flux for giant planets
    3839
    3940
  • trunk/libf/dyn3dpar/conf_planete.F90

    r1 r52  
    6464CALL getin('omeg',omeg)
    6565
     66! Intrinsic heat flux [default is none]
     67! Aymeric -- for giant planets
     68! [matters only if planet_type="giant"]
     69ihf = 0.
     70CALL getin('ihf',ihf)
     71
     72
     73
    6674END SUBROUTINE conf_planete
  • trunk/libf/dyn3dpar/gcm.F

    r8 r52  
    5959c   Declarations:
    6060c   -------------
     61
    6162#include "dimensions.h"
    6263#include "paramet.h"
     
    6768#include "logic.h"
    6869#include "temps.h"
     70!!!!!!!!!!!#include "control.h"
    6971#include "ener.h"
    7072#include "description.h"
     
    7375#include "iniprint.h"
    7476#include "tracstoke.h"
    75 
    7677#ifdef INCA
    7778! Only INCA needs these informations (from the Earth's physics)
    7879#include "indicesol.h"
    7980#endif
    80 
    8181      INTEGER         longcles
    8282      PARAMETER     ( longcles = 20 )
     
    9393      REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) ! vents covariants
    9494      REAL teta(ip1jmp1,llm)                 ! temperature potentielle
    95       REAL, ALLOCATABLE, DIMENSION(:,:,:) :: q ! champs advectes
     95      REAL, ALLOCATABLE, DIMENSION(:,:,:):: q! champs advectes
    9696      REAL ps(ip1jmp1)                       ! pression  au sol
    9797c      REAL p (ip1jmp1,llmp1  )               ! pression aux interfac.des couches
     
    219219#endif
    220220!      endif ! of if (planet_type.eq."earth")
    221 
     221!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     222c
    222223c Initialisations pour Cp(T) Venus
    223224      call ini_cpdet
    224 
     225c
    225226c-----------------------------------------------------------------------
    226227c   Choix du calendrier
     
    244245      endif
    245246#endif
     247c-----------------------------------------------------------------------
    246248
    247249      IF (config_inca /= 'none') THEN
     
    289291     &              teta,q,masse,ps,phis, time_0)
    290292        endif ! of if (planet_type.eq."mars")
    291 
     293       
    292294c       write(73,*) 'ucov',ucov
    293295c       write(74,*) 'vcov',vcov
     
    304306         CALL iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
    305307      endif
     308
    306309
    307310c-----------------------------------------------------------------------
     
    350353        write(lunout,*)' Pas de remise a zero'
    351354      ENDIF
     355
    352356c      if (annee_ref .ne. anneeref .or. day_ref .ne. dayref) then
    353357c        write(lunout,*)
     
    432436c   Initialisation de la physique :
    433437c   -------------------------------
    434       IF (call_iniphys.and.iflag_phys.eq.1) THEN
     438
     439      IF (call_iniphys.and.(iflag_phys.eq.1)) THEN
    435440         latfi(1)=rlatu(1)
    436441         lonfi(1)=0.
     
    450455         zcvfi(ngridmx) = cv(ip1jm-iim)
    451456         CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,aire,airefi)
    452 
    453457         WRITE(lunout,*)
    454458     .       'GCM: WARNING!!! vitesse verticale nulle dans la physique'
     459
    455460! Initialisation de la physique: pose probleme quand on tourne
    456461! SANS physique, car iniphysiq.F est dans le repertoire phy[]...
     
    462467         call_iniphys=.false.
    463468      ENDIF ! of IF (call_iniphys.and.(iflag_phys.eq.1))
    464 
     469!#endif
    465470
    466471c-----------------------------------------------------------------------
     
    508513      IF (mpi_rank==0) then
    509514        if (ok_dyn_ins) then
    510           ! initialize output file for instantaneous outputs
    511           ! t_ops = iecri * daysec ! do operations every t_ops
    512           t_ops =((1.0*iecri)/day_step) * daysec 
    513           t_wrt = daysec ! iecri * daysec ! write output every t_wrt
    514           t_wrt = daysec ! iecri * daysec ! write output every t_wrt
    515           CALL inithist(day_ref,annee_ref,time_step,
     515        ! initialize output file for instantaneous outputs
     516        ! t_ops = iecri * daysec ! do operations every t_ops
     517        t_ops =((1.0*iecri)/day_step) * daysec 
     518        t_wrt = daysec ! iecri * daysec ! write output every t_wrt
     519        CALL inithist(day_ref,annee_ref,time_step,
    516520     &                  t_ops,t_wrt)
    517521        endif
  • trunk/libf/dyn3dpar/iniacademic.F

    r7 r52  
    9696! --------------------------------------
    9797c
     98
     99        print *, 'This is iniacademic'
     100
    98101        ! initialize planet radius, rotation rate,...
    99102        call conf_planete
     
    155158          teta0=315.     ! mean Teta (S.H. 315K)
    156159          CALL getin('teta0',teta0)
     160          print *, 'iniacademic - teta0 ', teta0
     161          print *, 'iniacademic - rad ', rad
    157162          ttp=200.       ! Tropopause temperature (S.H. 200K)
    158163          CALL getin('ttp',ttp)
     
    200205             tetajl(j,l)=teta0-delt_y*ddsin*ddsin+eps*ddsin
    201206     &           -delt_z*(1.-ddsin*ddsin)*log(zsig)
     207             !! Aymeric -- tests particuliers
     208             if (planet_type=="giant") then
     209             tetajl(j,l)=teta0+(delt_y*
     210     &          ((sin(rlatu(j)*3.14159*eps+0.0001))**2)
     211     &          / ((rlatu(j)*3.14159*eps+0.0001)**2))
     212     &          -delt_z*log(zsig)
     213!!!             ddsin=sin(2.5*3.14159*rlatu(j))
     214!!!             tetajl(j,l)=teta0-delt_y*ddsin*ddsin
     215!!!!     &           -delt_z*(1.-ddsin*ddsin)*log(zsig)
     216             endif
    202217             ! Profil stratospherique isotherme (+vortex)
    203218             w_pv=(1.-tanh((rlatu(j)-phi_pv)/dphi_pv))/2.
     
    217232            enddo
    218233          enddo
     234          PRINT *, 'iniacademic - check',tetajl(:,int(llm/2)),rlatu(:)
    219235
    220236
  • trunk/libf/dyn3dpar/leapfrog_p.F

    r8 r52  
    117117      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: dqfi
    118118
     119       !! Aymeric -- cp(T) comme dans leapfrog.F, SAVE OK ???
     120      REAL,SAVE :: duspg(ip1jmp1,llm) ! for bilan_dyn
     121
     122
    119123c   variables pour le fichier histoire
    120124      REAL dtav      ! intervalle de temps elementaire
     
    177181
    178182      logical , parameter :: flag_verif = .false.
    179      
     183
     184      ! for CP(T)  -- Aymeric
     185      real :: dtec
     186      real,external :: cpdet
     187      real,save :: ztetaec(ip1jmp1,llm)  !!SAVE ???
     188
    180189c declaration liees au parallelisme
    181190      INTEGER :: ierr
     
    560569!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    561570      do l=1,llm
    562         tsurpk(ijb:ije,llm)=cpp*temp(ijb:ije,llm)/pk(ijb:ije,llm)
     571        tsurpk(ijb:ije,l)=cpp*temp(ijb:ije,l)/pk(ijb:ije,l)
    563572      enddo
    564573!$OMP END DO
     
    9991008       enddo ! of do l=1,llm
    10001009!$OMP END DO
     1010
     1011       if (planet_type.eq."giant") then
     1012          ! Intrinsic heat flux
     1013          ! Aymeric -- for giant planets
     1014          if (ihf .gt. 1.e-6) then
     1015          !print *, '**** INTRINSIC HEAT FLUX ****', ihf
     1016          teta(ijb:ije,1) = teta(ijb:ije,1)
     1017     &        + dtvr * aire(ijb:ije) * ihf / cpp / masse(ijb:ije,1)
     1018          !print *, '**** d teta '
     1019          !print *, dtvr * aire(ijb:ije) * ihf / cpp / masse(ijb:ije,1)
     1020          endif
     1021       endif
    10011022
    10021023       call Register_Hallo(ucov,ip1jmp1,llm,0,1,1,0,Request_Physic)
     
    14631484!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    14641485      do l=1,llm
    1465         tsurpk(ijb:ije,llm)=cpp*temp(ijb:ije,llm)/pk(ijb:ije,llm)
     1486        tsurpk(ijb:ije,l)=cpp*temp(ijb:ije,l)/pk(ijb:ije,l)
    14661487      enddo
    14671488!$OMP END DO
     
    16851706                ije=ij_end
    16861707!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    1687                 do l=1,llm
    1688                   tsurpk(ijb:ije,llm)=cpp*temp(ijb:ije,llm)/
    1689      &                                             pk(ijb:ije,llm)
     1708                do l=1,llm     
     1709                  tsurpk(ijb:ije,l)=cpp*temp(ijb:ije,l)/
     1710     &                                             pk(ijb:ije,l)
    16901711                enddo
    16911712!$OMP END DO
  • trunk/libf/phylmd/regr_lat_time_climoz_m.F90

    r1 r52  
    239239    end if
    240240
    241     if (desc_lat) o3_in = o3_in(n_lat:1:-1, :, :, :)
    242     if (desc_plev) o3_in = o3_in(:, n_plev:1:-1, :, :)
     241    !!!! Aymeric; problem with compilation here.... pb with o3_in
     242    !AS if (desc_lat) o3_in = o3_in(n_lat:1:-1, :, :, :)
     243    !AS if (desc_plev) o3_in = o3_in(:, n_plev:1:-1, :, :)
    243244
    244245    do m = 1, read_climoz
     
    251252             ! Next to the south pole:
    252253             j = 1
    253              do while (o3_in(j, 1, l, m) == missing_value)
    254                 j = j + 1
    255              end do
    256              if (j > 1) o3_in(:j-1, :, l, m) = &
    257                   spread(o3_in(j, :, l, m), dim=1, ncopies=j-1)
     254!AS             do while (o3_in(j, 1, l, m) == missing_value)
     255!AS                j = j + 1
     256!AS             end do
     257!AS             if (j > 1) o3_in(:j-1, :, l, m) = &
     258!AS                  spread(o3_in(j, :, l, m), dim=1, ncopies=j-1)
    258259             
    259260             ! Next to the north pole:
    260261             j = n_lat
    261              do while (o3_in(j, 1, l, m) == missing_value)
    262                 j = j - 1
    263              end do
    264              if (j < n_lat) o3_in(j+1:, :, l, m) = &
    265                   spread(o3_in(j, :, l, m), dim=1, ncopies=n_lat-j)
     262!AS             do while (o3_in(j, 1, l, m) == missing_value)
     263!AS                j = j - 1
     264!AS             end do
     265!AS             if (j < n_lat) o3_in(j+1:, :, l, m) = &
     266!AS                  spread(o3_in(j, :, l, m), dim=1, ncopies=n_lat-j)
    266267
    267268             ! Take care of missing values at high pressure:
     
    272273                ! missing values so the highest level has a valid value.
    273274                k = 2
    274                 do while  (o3_in(j, k, l, m) /= missing_value .and. k < n_plev)
    275                    k = k + 1
    276                 end do
     275!AS                do while  (o3_in(j, k, l, m) /= missing_value .and. k < n_plev)
     276!AS                   k = k + 1
     277!AS                end do
    277278                ! Replace missing values with the valid value at the
    278279                ! lowest level above missing values:
    279                 if (o3_in(j, k, l, m) == missing_value) &
    280                      o3_in(j, k:n_plev, l, m) = o3_in(j, k-1, l, m)
     280!AS                if (o3_in(j, k, l, m) == missing_value) &
     281!AS                     o3_in(j, k:n_plev, l, m) = o3_in(j, k-1, l, m)
    281282             end do
    282283          end do
     
    298299       print *, &
    299300            "Found 12 months in ozone climatologies, assuming periodicity..."
    300        o3_regr_lat(jjm+1:1:-1, :, 1:12, :) = regr1_step_av(o3_in, &
    301             xs=sin(lat_in_edg), xt=sin((/- pi / 2, rlatv(jjm:1:-1), pi / 2/)))
     301!AS       o3_regr_lat(jjm+1:1:-1, :, 1:12, :) = regr1_step_av(o3_in, &
     302!AS            xs=sin(lat_in_edg), xt=sin((/- pi / 2, rlatv(jjm:1:-1), pi / 2/)))
    302303       ! (invert order of indices in "o3_regr_lat" because "rlatu" is
    303304       ! in descending order)
     
    309310    else
    310311       print *, "Using 14 months in ozone climatologies..."
    311        o3_regr_lat(jjm+1:1:-1, :, :, :) = regr1_step_av(o3_in, &
    312             xs=sin(lat_in_edg), xt=sin((/- pi / 2, rlatv(jjm:1:-1), pi / 2/)))
     312!AS       o3_regr_lat(jjm+1:1:-1, :, :, :) = regr1_step_av(o3_in, &
     313!AS            xs=sin(lat_in_edg), xt=sin((/- pi / 2, rlatv(jjm:1:-1), pi / 2/)))
    313314       ! (invert order of indices in "o3_regr_lat" because "rlatu" is
    314315       ! in descending order)
  • trunk/mars/libf/phymars/meso_callkeys.h

    r47 r52  
    1515     
    1616      COMMON/callkeys_i/iradia,iaervar,iddist,ilwd,ilwb,ilwn,ncouche    &
    17      &   ,dustbin,nqchem_min
     17     &   ,dustbin,nqchem_min,ecri_phys
    1818     
    1919      COMMON/callkeys_r/topdustref,solarcondate,semi,alphan
Note: See TracChangeset for help on using the changeset viewer.