Changeset 347


Ignore:
Timestamp:
08/01/15 15:05:27 (9 years ago)
Author:
dubos
Message:

Synced with aquaplanet branch HEAT@45 - tested with DCMIP4

Location:
codes/icosagcm/trunk
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/arch/arch-X64_CURIE.env

    r171 r347  
    11module unload netcdf 
    22module unload hdf5 
    3 module load netcdf/4.2_hdf5_parallel 
    4 module load  hdf5/1.8.9_parallel 
     3module load  netcdf/4.3.3.1_hdf5_parallel  
    54module load vampir 
    65module load vampirtrace 
  • codes/icosagcm/trunk/arch/arch-X64_CURIE.path

    r171 r347  
    1111HDF5_LIB="-lhdf5_hl -lhdf5 -lhdf5 -lz -lcurl" 
    1212 
    13 XIOS_INCDIR="-I$WORKDIR/XIOS_COMMIT_V1.7/inc" 
    14 XIOS_LIBDIR="-L$WORKDIR/XIOS_COMMIT_V1.7/lib" 
     13XIOS_INCDIR="-I $PWD/../XIOS/inc" 
     14XIOS_LIBDIR="-L $PWD/../XIOS/lib" 
    1515XIOS_LIB="-lxios -lstdc++" 
     16 
     17IOIPSL_INCDIR="-I $PWD/../IOIPSL/src" 
     18IOIPSL_LIBDIR="-L $PWD/../IOIPSL/src" 
     19IOIPSL_LIB="-lioipsl" 
  • codes/icosagcm/trunk/bld.cfg

    r184 r347  
    1313%FFLAGS           %BASE_FFLAGS %COMPIL_FFLAGS 
    1414 
    15 #dest   $PWD 
    1615dir::root            $PWD 
    1716 
    1817src::src        src 
    19 src::ioipsl     tools/ioipsl 
     18src::ioipsl     %IOIPSL_PATH 
    2019search_src           false 
    21 bld::lib::ioipsl ioipsl 
    22 bld::target libioipsl.a 
     20#bld::lib::ioipsl ioipsl 
     21#bld::target libioipsl.a 
     22 
     23bld::lib    icosa 
     24bld::target libicosa.a 
    2325bld::target icosa_gcm.exe 
    2426 
     
    3840bld::excl_dep        inc::mpif.h 
    3941bld::excl_dep        use::xios 
     42bld::excl_dep        %USE_IOIPSL 
    4043 
    4144bld::tool::SHELL   /bin/bash 
  • codes/icosagcm/trunk/clean

    r150 r347  
    1 rm -rf ./obj/* 
    2 rm -rf ./done/* 
    3 rm -rf ./inc/* 
    4 rm -rf ./flags/* 
    5 rm -rf ./ppsrc/* 
     1rm -rf ./obj 
     2rm -rf ./done 
     3rm -rf ./inc 
     4rm -rf ./flags 
     5rm -rf ./ppsrc 
     6rm -rf ./bld 
     7rm -rf ./lib 
     8rm -rf ./etc 
     9rm -rf ./tmp 
     10rm -rf ./bin 
    611 
     12 
  • codes/icosagcm/trunk/compile

    r150 r347  
    1 ./make_icosa -prod -arch x86_skd  
    2 #./make_icosa -prod -arch x86_skdmpi -parallel mpi 
     1./make_icosa -debug -parallel mpi_omp -arch X64_CURIE  
  • codes/icosagcm/trunk/make_icosa

    r332 r347  
    11#!/bin/bash 
    2 set -x 
    32export PATH=$PWD/tools/FCM/bin:$PATH 
    43 
     
    1716parallel="none" 
    1817physics="none" 
     18external_ioipsl="FALSE" 
     19external_physics="FALSE" 
     20 
    1921CPP_KEY="CPP_NONE"  
    2022ICOSA_LIB="" 
     
    6163      "-with_xios") 
    6264          with_xios_defined="TRUE" ; shift ;; 
     65 
     66      "-external_ioipsl") 
     67          external_ioipsl="TRUE" ; shift ;; 
     68 
     69      "-external_physics") 
     70          external_physics="TRUE" ; shift ;; 
    6371 
    6472      *) 
     
    140148fi   
    141149 
     150if [[ "$external_ioipsl" == "TRUE" ]] 
     151then 
     152  ioipsl_path=".void_dir" 
     153  use_ioipsl="use::ioipsl" 
     154  COMPIL_FFLAGS="$COMPIL_FFLAGS $IOIPSL_INCDIR" 
     155  ICOSA_LIB="$ICOSA_LIB $IOIPSL_LIBDIR $IOIPSL_LIB" 
     156else  
     157  ioipsl_path="tools/ioipsl" 
     158  use_ioipsl="" 
     159fi   
     160 
     161if [[ "$external_physics" == "TRUE" ]] 
     162then 
     163  CPP_KEY="$CPP_KEY CPP_USING_EXTERNAL_PHYSICS" 
     164fi 
     165 
    142166ICOSA_LIB="$ICOSA_LIB $NETCDF_LIBDIR $NETCDF_LIB $HDF5_LIBDIR $HDF5_LIB" 
    143167 
     
    149173echo "%CPP_KEY $CPP_KEY" >> config.fcm 
    150174echo "%LIB $ICOSA_LIB">> config.fcm 
     175echo "%IOIPSL_PATH $ioipsl_path">> config.fcm 
     176echo "%USE_IOIPSL $use_ioipsl">> config.fcm 
    151177 
    152178if [[ "$full_defined" == "TRUE" ]] 
  • codes/icosagcm/trunk/src/advect_tracer.f90

    r327 r347  
    5858    USE mpipara 
    5959    USE trace 
    60     USE write_field 
     60    USE write_field_mod 
    6161    IMPLICIT NONE 
    6262     
  • codes/icosagcm/trunk/src/caldyn_gcm.f90

    r327 r347  
    223223          CALL compute_pvort(ps,u,theta_rhodz, mass,theta,qu,qv) 
    224224       ENDDO 
     225!       CALL checksum(f_mass) 
     226!       CALL checksum(f_theta) 
    225227 
    226228       CALL send_message(f_qu,req_qu) 
     
    252254          END IF 
    253255       ENDDO        
     256    
     257!       CALL checksum(f_geopot) 
     258!       CALL checksum(f_dmass) 
     259!       CALL checksum(f_pk) 
     260!       CALL checksum(f_pk) 
    254261        
    255262    CASE(enstrophy) ! enstrophy-conserving 
     
    294301!       CALL write_output_fields(f_ps, f_phis, f_dps, f_u, f_theta_rhodz, f_q, & 
    295302!            f_buf_i, f_buf_v, f_buf_u3d, f_buf_ulon, f_buf_ulat, f_buf_s, f_buf_p) 
    296        CALL un2ulonlat(f_u, f_buf_ulon, f_buf_ulat) 
    297        CALL output_field("ulon",f_buf_ulon) 
    298        CALL output_field("ulat",f_buf_ulat) 
    299  
    300        CALL output_field("ps",f_ps) 
    301        CALL output_field("dps",f_dps) 
    302        CALL output_field("mass",f_mass) 
    303        CALL output_field("dmass",f_dmass) 
    304        CALL output_field("vort",f_qv) 
    305        CALL output_field("theta",f_theta) 
    306        CALL output_field("exner",f_pk) 
    307        CALL output_field("pv",f_qv) 
    308   
     303!       CALL un2ulonlat(f_u, f_buf_ulon, f_buf_ulat) 
     304!       CALL output_field("ulon",f_buf_ulon) 
     305!       CALL output_field("ulat",f_buf_ulat) 
     306 
     307!       CALL output_field("ps",f_ps) 
     308!       CALL output_field("dps",f_dps) 
     309!       CALL output_field("mass",f_mass) 
     310!       CALL output_field("dmass",f_dmass) 
     311!       CALL output_field("vort",f_qv) 
     312!       CALL output_field("theta",f_theta) 
     313!       CALL output_field("exner",f_pk) 
     314!       CALL output_field("pv",f_qv) 
     315!  
    309316    END IF 
    310317     
     
    439446    INTEGER :: i,j,ij,l 
    440447    REAL(rstd) :: p_ik, exner_ik 
    441     INTEGER,SAVE ::ij_omp_begin_ext, ij_omp_end_ext 
    442 !$OMP THREADPRIVATE(ij_omp_begin_ext, ij_omp_end_ext) 
    443     LOGICAL,SAVE :: first=.TRUE. 
    444 !$OMP THREADPRIVATE(first) 
     448    INTEGER    :: ij_omp_begin_ext, ij_omp_end_ext 
    445449 
    446450 
    447451    CALL trace_start("compute_geopot") 
    448452     
    449     IF (first) THEN 
    450       first=.FALSE. 
    451       CALL distrib_level(ij_end_ext-ij_begin_ext+1,ij_omp_begin_ext,ij_omp_end_ext) 
    452       ij_omp_begin_ext=ij_omp_begin_ext+ij_begin_ext-1 
    453       ij_omp_end_ext=ij_omp_end_ext+ij_begin_ext-1 
    454     ENDIF 
     453    CALL distrib_level(ij_end_ext-ij_begin_ext+1,ij_omp_begin_ext,ij_omp_end_ext) 
     454    ij_omp_begin_ext=ij_omp_begin_ext+ij_begin_ext-1 
     455    ij_omp_end_ext=ij_omp_end_ext+ij_begin_ext-1 
    455456 
    456457    IF(caldyn_eta==eta_mass) THEN 
     
    798799    INTEGER :: i,j,ij,l 
    799800    REAL(rstd) :: p_ik, exner_ik 
    800     INTEGER,SAVE ::ij_omp_begin, ij_omp_end 
    801 !$OMP THREADPRIVATE(ij_omp_begin, ij_omp_end) 
    802     LOGICAL,SAVE :: first=.TRUE. 
    803 !$OMP THREADPRIVATE(first) 
     801    INTEGER    :: ij_omp_begin, ij_omp_end 
    804802 
    805803 
    806804    CALL trace_start("compute_geopot") 
    807      
    808     IF (first) THEN 
    809       first=.FALSE. 
    810       CALL distrib_level(ij_end-ij_begin+1,ij_omp_begin,ij_omp_end) 
    811       ij_omp_begin=ij_omp_begin+ij_begin-1 
    812       ij_omp_end=ij_omp_end+ij_begin-1 
    813     ENDIF 
     805 
     806    CALL distrib_level(ij_end-ij_begin+1,ij_omp_begin,ij_omp_end) 
     807    ij_omp_begin=ij_omp_begin+ij_begin-1 
     808    ij_omp_end=ij_omp_end+ij_begin-1 
    814809 
    815810!    REAL(rstd) :: wwuu(iim*3*jjm,llm+1) ! tmp var, don't know why but gain 30% on the whole code in opemp 
     
    959954    USE pression_mod 
    960955    USE omega_mod 
    961     USE write_field 
     956    USE write_field_mod 
    962957    USE vertical_interp_mod 
    963958    USE wind_mod 
  • codes/icosagcm/trunk/src/etat0_heldsz.f90

    r286 r347  
    7676 
    7777       theta_eq=f_theta_eq(ind)  
    78        CALL compute_Teq(lat_i,theta_eq) ! FIXME : already done by Init_Teq 
     78       CALL compute_Teq(lat_i,theta_eq) ! FIXME : already done by Init_Teq  
    7979 
    8080       ps=f_ps(ind) 
     
    9090       CALL compute_theta2theta_rhodz(ps,theta,theta_rhodz,1) 
    9191       q=f_q(ind) 
    92        q(:,:,:)=1e2 
     92       q(:,:,1)=1e-2 
     93       q(:,:,2)=0 
     94       q(:,:,3:)=1e-2 
    9395    ENDDO 
    9496  END SUBROUTINE etat0 
  • codes/icosagcm/trunk/src/etat0_start_file.f90

    r266 r347  
    1111  USE restart_mod 
    1212  USE wind_mod 
    13   USE write_field 
     13  USE write_field_mod 
    1414  USE time_mod 
    1515  USE transfert_mod 
  • codes/icosagcm/trunk/src/icosa_gcm.f90

    r327 r347  
    1 PROGRAM ICOSA_GCM 
    2   USE icosa 
    3   USE timeloop_gcm_mod 
    4   USE disvert_mod 
    5   USE etat0_mod 
    6   USE wind_mod 
    7   USE mpipara 
    8   USE omp_para 
    9   USE vertical_interp_mod 
    10   USE trace 
    11   USE output_field_mod 
    12   USE xios_mod 
    13   USE write_field 
    14   USE physics_mod 
     1PROGRAM icosa_gcm 
     2  USE icosa_init_mod, ONLY : icosa_init 
    153 
    16 !  USE getin_mod 
    17   IMPLICIT NONE 
    18    
    19   CALL init_mpipara 
    20   CALL trace_off 
    21   CALL xios_init 
    22   CALL init_earth_const  
    23   CALL init_grid_param(is_mpi_master) 
    24   CALL init_omp_para(is_mpi_master) 
    25   CALL compute_metric 
    26   CALL compute_domain 
    27   CALL init_transfert 
    28   CALL init_writefield 
    29   CALL init_trace 
     4  CALL icosa_init 
    305 
    31 !$OMP PARALLEL   
    32   CALL switch_omp_no_distrib_level 
    33   CALL compute_geometry 
    34   CALL check_total_area 
    35    
    36   CALL init_disvert  
    37   CALL init_vertical_interp 
    386 
    39   CALL WriteField("Ai",geom%Ai) 
    40    
    41   IF (is_mpi_root) CALL write_apbp 
    42   CALL init_time 
     7END PROGRAM icosa_gcm 
    438 
    44   CALL output_field_init 
    45   CALL init_timeloop 
    46 !$OMP END PARALLEL 
    47   
    48   CALL init_physics 
    49     
    50 !$OMP PARALLEL   
    51   CALL timeloop 
    52   CALL switch_omp_no_distrib_level 
    53 !$OMP END PARALLEL 
     9SUBROUTINE initialize_external_physics 
     10END SUBROUTINE initialize_external_physics 
    5411 
    55   CALL output_field_finalize 
    56   CALL close_files 
    57   CALL close_time_counter 
    58   CALL finalize_mpipara 
    59  
    60 CONTAINS 
    61    
    62   SUBROUTINE check_total_area 
    63     IMPLICIT NONE 
    64     TYPE(t_field),POINTER,SAVE :: sum_ne(:) 
    65     TYPE(t_field),POINTER,SAVE :: sum_ne_glo(:) 
    66     REAL(rstd),POINTER :: pt_sum_ne(:) 
    67      
    68     INTEGER :: ind,i,j,k,n 
    69     REAL(rstd) :: vect(3,6) 
    70     REAL(rstd) :: centr(3),dist     
    71     REAL(rstd) :: tot_sum=0 
    72     CALL allocate_field(sum_ne,field_T,type_real) 
    73      
    74     !$OMP BARRIER 
    75     !$OMP MASTER 
    76     DO ind=1,ndomain 
    77         
    78        pt_sum_ne=sum_ne(ind) 
    79         
    80        CALL swap_dimensions(ind) 
    81        CALL swap_geometry(ind) 
    82         
    83        DO j=jj_begin,jj_end 
    84           DO i=ii_begin,ii_end 
    85              n=(j-1)*iim+i 
    86              pt_sum_ne(n)=0 
    87              DO k=1,6 
    88                 pt_sum_ne(n)=pt_sum_ne(n)+ne(n,k) 
    89              ENDDO 
    90              IF (domain(ind)%own(i,j)) tot_sum=tot_sum+Ai(n) 
    91           ENDDO 
    92        ENDDO 
    93     ENDDO 
    94      
    95     IF (is_mpi_root) PRINT *," Diff surf",1-tot_sum/(4*Pi*radius*radius) 
    96     !$OMP END MASTER 
    97      
    98   END SUBROUTINE check_total_area 
    99 END PROGRAM ICOSA_gcm 
     12SUBROUTINE external_physics 
     13END SUBROUTINE external_physics 
  • codes/icosagcm/trunk/src/icosa_mod.f90

    r186 r347  
    1313  USE vector 
    1414  USE field_mod 
    15   USE write_field 
     15  USE write_field_mod 
    1616  USE transfert_mod 
    1717  USE time_mod 
  • codes/icosagcm/trunk/src/output_field.f90

    r186 r347  
    1414  USE getin_mod 
    1515  USE xios_mod 
    16   USE write_field 
     16  USE write_field_mod 
    1717  IMPLICIT NONE 
    1818 
     
    3737    USE field_mod 
    3838    USE xios_mod 
    39     USE write_field 
     39    USE write_field_mod 
    4040    IMPLICIT NONE   
    4141     CHARACTER(LEN=*),INTENT(IN) :: name_in 
  • codes/icosagcm/trunk/src/physics.f90

    r327 r347  
    55  PRIVATE 
    66 
    7   INTEGER, PARAMETER :: phys_none=0, phys_HS94=1, phys_DCMIP=2, phys_lmdz_generic=3, phys_LB2012=4  
     7  INTEGER, PARAMETER :: phys_none=0, phys_HS94=1, phys_DCMIP=2, phys_lmdz_generic=3, phys_LB2012=4, phys_external=5 
    88 
    99  INTEGER :: phys_type 
     
    2727    USE etat0_venus_mod, ONLY : init_phys_venus=>init_physics 
    2828    USE physics_lmdz_generic_mod, ONLY : init_physics_lmdz_generic=>init_physics 
     29    USE physics_external_mod, ONLY : init_physics_external=>init_physics 
    2930    IMPLICIT NONE 
    3031 
     
    4546       CALL init_physics_lmdz_generic 
    4647       phys_type=phys_lmdz_generic 
     48    CASE ('phys_external') 
     49       CALL init_physics_external 
     50       phys_type=phys_external 
    4751    CASE ('dcmip') 
    4852       CALL allocate_field(f_dulon,field_t,type_real,llm, name='dulon') 
     
    5559    CASE DEFAULT 
    5660       IF(is_mpi_root) PRINT*, 'init_physics : Bad selector for variable physics <',& 
    57             TRIM(physics_type), '> options are <none>, <held_suarez>, <Lebonnois2012>, <dcmip>, <phys_lmdz_generic>' 
     61            TRIM(physics_type), '> options are <none>, <held_suarez>, <Lebonnois2012>, <dcmip>', & 
     62                                '<phys_lmdz_generic>, <phys_external>' 
    5863       STOP 
    5964    END SELECT 
     
    6671    USE physics_interface_mod 
    6772    USE physics_lmdz_generic_mod, ONLY : physics_lmdz_generic => physics 
     73    USE physics_external_mod, ONLY : physics_external => physics 
    6874    USE physics_dcmip_mod, ONLY : write_physics_dcmip => write_physics 
    6975    USE etat0_heldsz_mod 
     
    96102       CASE (phys_lmdz_generic) 
    97103         CALL physics_lmdz_generic(it ,f_phis, f_ps, f_theta_rhodz, f_ue, f_wflux, f_q) 
     104       CASE (phys_external) 
     105         CALL physics_external(it ,f_phis, f_ps, f_theta_rhodz, f_ue, f_wflux, f_q) 
    98106       CASE(phys_LB2012) 
    99107          CALL phys_venus(f_ps,f_theta_rhodz,f_ue)  
  • codes/icosagcm/trunk/src/time.f90

    r327 r347  
    2525  INTEGER,SAVE :: day_step,ndays 
    2626!$OMP THREADPRIVATE(day_step,ndays)   
    27   REAL(rstd),SAVE :: jD_ref,jH_ref 
    28 !$OMP THREADPRIVATE(jD_ref,jH_ref)   
    29   INTEGER,SAVE :: day_ini,day_end,annee_ref,day_ref 
    30 !$OMP THREADPRIVATE(day_ini,day_end,annee_ref,day_ref)   
    31   REAL(rstd),SAVE::start_time 
    32 !$OMP THREADPRIVATE(start_time)   
     27 
    3328  CHARACTER(LEN=255) :: time_style 
    3429!$OMP THREADPRIVATE(time_style)   
    35   INTEGER,SAVE:: an, mois, jour 
    36 !$OMP THREADPRIVATE(an, mois, jour)   
    37   REAL(rstd),SAVE:: heure 
    38 !$OMP THREADPRIVATE(heure)   
    39   CHARACTER (LEN=10):: calend 
    40 !$OMP THREADPRIVATE(calend)   
    4130 
    4231  PUBLIC create_time_counter_header, update_time_counter, close_time_counter, init_time,  & 
    4332         dt, write_period, itau_out, itau_adv, itau_dissip, itau_physics, itaumax,  & 
    4433         itau_check_conserv,  &  
    45          day_step,ndays,jD_ref,jH_ref,day_ini,day_end,annee_ref,day_ref, & 
    46          an, mois, jour,heure, calend,time_style,itau0 
     34         day_step,ndays,time_style,itau0 
    4735 
    4836 
  • codes/icosagcm/trunk/src/timeloop_gcm.f90

    r339 r347  
    4040  USE check_conserve_mod 
    4141  USE output_field_mod 
    42   USE write_field 
     42  USE write_field_mod 
    4343  USE theta2theta_rhodz_mod 
    4444  USE sponge_mod 
     
    246246 
    247247    DO stage=1,nb_stage 
     248!       CALL checksum(f_ps) 
     249!       CALL checksum(f_theta_rhodz) 
     250!       CALL checksum(f_mass) 
    248251       CALL caldyn((stage==1) .AND. (MOD(it,itau_out)==0), & 
    249252            f_phis,f_ps,f_mass,f_theta_rhodz,f_u, f_q, & 
    250253            f_hflux, f_wflux, f_dps, f_dmass, f_dtheta_rhodz, f_du) 
     254!       CALL checksum(f_dps) 
     255!       CALL checksum(f_dtheta_rhodz) 
     256!       CALL checksum(f_dmass) 
    251257       SELECT CASE (scheme) 
    252258       CASE(euler) 
  • codes/icosagcm/trunk/src/write_etat0.f90

    r266 r347  
    99  USE restart_mod 
    1010  USE wind_mod 
    11   USE write_field 
     11  USE write_field_mod 
    1212  IMPLICIT NONE 
    1313    INTEGER,INTENT(IN)    :: it 
  • codes/icosagcm/trunk/src/write_field.f90

    r206 r347  
    1 module write_field 
     1module write_field_mod 
    22USE genmod 
    33implicit none 
     
    17991799  end function int2str 
    18001800 
    1801 end module write_field 
     1801end module write_field_mod 
    18021802   
Note: See TracChangeset for help on using the changeset viewer.