Changeset 347
- Timestamp:
- 08/01/15 15:05:27 (9 years ago)
- Location:
- codes/icosagcm/trunk
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/arch/arch-X64_CURIE.env
r171 r347 1 1 module unload netcdf 2 2 module unload hdf5 3 module load netcdf/4.2_hdf5_parallel 4 module load hdf5/1.8.9_parallel 3 module load netcdf/4.3.3.1_hdf5_parallel 5 4 module load vampir 6 5 module load vampirtrace -
codes/icosagcm/trunk/arch/arch-X64_CURIE.path
r171 r347 11 11 HDF5_LIB="-lhdf5_hl -lhdf5 -lhdf5 -lz -lcurl" 12 12 13 XIOS_INCDIR="-I $WORKDIR/XIOS_COMMIT_V1.7/inc"14 XIOS_LIBDIR="-L $WORKDIR/XIOS_COMMIT_V1.7/lib"13 XIOS_INCDIR="-I $PWD/../XIOS/inc" 14 XIOS_LIBDIR="-L $PWD/../XIOS/lib" 15 15 XIOS_LIB="-lxios -lstdc++" 16 17 IOIPSL_INCDIR="-I $PWD/../IOIPSL/src" 18 IOIPSL_LIBDIR="-L $PWD/../IOIPSL/src" 19 IOIPSL_LIB="-lioipsl" -
codes/icosagcm/trunk/bld.cfg
r184 r347 13 13 %FFLAGS %BASE_FFLAGS %COMPIL_FFLAGS 14 14 15 #dest $PWD16 15 dir::root $PWD 17 16 18 17 src::src src 19 src::ioipsl tools/ioipsl18 src::ioipsl %IOIPSL_PATH 20 19 search_src false 21 bld::lib::ioipsl ioipsl 22 bld::target libioipsl.a 20 #bld::lib::ioipsl ioipsl 21 #bld::target libioipsl.a 22 23 bld::lib icosa 24 bld::target libicosa.a 23 25 bld::target icosa_gcm.exe 24 26 … … 38 40 bld::excl_dep inc::mpif.h 39 41 bld::excl_dep use::xios 42 bld::excl_dep %USE_IOIPSL 40 43 41 44 bld::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/* 1 rm -rf ./obj 2 rm -rf ./done 3 rm -rf ./inc 4 rm -rf ./flags 5 rm -rf ./ppsrc 6 rm -rf ./bld 7 rm -rf ./lib 8 rm -rf ./etc 9 rm -rf ./tmp 10 rm -rf ./bin 6 11 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 1 1 #!/bin/bash 2 set -x3 2 export PATH=$PWD/tools/FCM/bin:$PATH 4 3 … … 17 16 parallel="none" 18 17 physics="none" 18 external_ioipsl="FALSE" 19 external_physics="FALSE" 20 19 21 CPP_KEY="CPP_NONE" 20 22 ICOSA_LIB="" … … 61 63 "-with_xios") 62 64 with_xios_defined="TRUE" ; shift ;; 65 66 "-external_ioipsl") 67 external_ioipsl="TRUE" ; shift ;; 68 69 "-external_physics") 70 external_physics="TRUE" ; shift ;; 63 71 64 72 *) … … 140 148 fi 141 149 150 if [[ "$external_ioipsl" == "TRUE" ]] 151 then 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" 156 else 157 ioipsl_path="tools/ioipsl" 158 use_ioipsl="" 159 fi 160 161 if [[ "$external_physics" == "TRUE" ]] 162 then 163 CPP_KEY="$CPP_KEY CPP_USING_EXTERNAL_PHYSICS" 164 fi 165 142 166 ICOSA_LIB="$ICOSA_LIB $NETCDF_LIBDIR $NETCDF_LIB $HDF5_LIBDIR $HDF5_LIB" 143 167 … … 149 173 echo "%CPP_KEY $CPP_KEY" >> config.fcm 150 174 echo "%LIB $ICOSA_LIB">> config.fcm 175 echo "%IOIPSL_PATH $ioipsl_path">> config.fcm 176 echo "%USE_IOIPSL $use_ioipsl">> config.fcm 151 177 152 178 if [[ "$full_defined" == "TRUE" ]] -
codes/icosagcm/trunk/src/advect_tracer.f90
r327 r347 58 58 USE mpipara 59 59 USE trace 60 USE write_field 60 USE write_field_mod 61 61 IMPLICIT NONE 62 62 -
codes/icosagcm/trunk/src/caldyn_gcm.f90
r327 r347 223 223 CALL compute_pvort(ps,u,theta_rhodz, mass,theta,qu,qv) 224 224 ENDDO 225 ! CALL checksum(f_mass) 226 ! CALL checksum(f_theta) 225 227 226 228 CALL send_message(f_qu,req_qu) … … 252 254 END IF 253 255 ENDDO 256 257 ! CALL checksum(f_geopot) 258 ! CALL checksum(f_dmass) 259 ! CALL checksum(f_pk) 260 ! CALL checksum(f_pk) 254 261 255 262 CASE(enstrophy) ! enstrophy-conserving … … 294 301 ! CALL write_output_fields(f_ps, f_phis, f_dps, f_u, f_theta_rhodz, f_q, & 295 302 ! 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 ! 309 316 END IF 310 317 … … 439 446 INTEGER :: i,j,ij,l 440 447 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 445 449 446 450 447 451 CALL trace_start("compute_geopot") 448 452 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 455 456 456 457 IF(caldyn_eta==eta_mass) THEN … … 798 799 INTEGER :: i,j,ij,l 799 800 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 804 802 805 803 806 804 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 814 809 815 810 ! REAL(rstd) :: wwuu(iim*3*jjm,llm+1) ! tmp var, don't know why but gain 30% on the whole code in opemp … … 959 954 USE pression_mod 960 955 USE omega_mod 961 USE write_field 956 USE write_field_mod 962 957 USE vertical_interp_mod 963 958 USE wind_mod -
codes/icosagcm/trunk/src/etat0_heldsz.f90
r286 r347 76 76 77 77 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 79 79 80 80 ps=f_ps(ind) … … 90 90 CALL compute_theta2theta_rhodz(ps,theta,theta_rhodz,1) 91 91 q=f_q(ind) 92 q(:,:,:)=1e2 92 q(:,:,1)=1e-2 93 q(:,:,2)=0 94 q(:,:,3:)=1e-2 93 95 ENDDO 94 96 END SUBROUTINE etat0 -
codes/icosagcm/trunk/src/etat0_start_file.f90
r266 r347 11 11 USE restart_mod 12 12 USE wind_mod 13 USE write_field 13 USE write_field_mod 14 14 USE time_mod 15 15 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 1 PROGRAM icosa_gcm 2 USE icosa_init_mod, ONLY : icosa_init 15 3 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 30 5 31 !$OMP PARALLEL32 CALL switch_omp_no_distrib_level33 CALL compute_geometry34 CALL check_total_area35 36 CALL init_disvert37 CALL init_vertical_interp38 6 39 CALL WriteField("Ai",geom%Ai) 40 41 IF (is_mpi_root) CALL write_apbp 42 CALL init_time 7 END PROGRAM icosa_gcm 43 8 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 9 SUBROUTINE initialize_external_physics 10 END SUBROUTINE initialize_external_physics 54 11 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 12 SUBROUTINE external_physics 13 END SUBROUTINE external_physics -
codes/icosagcm/trunk/src/icosa_mod.f90
r186 r347 13 13 USE vector 14 14 USE field_mod 15 USE write_field 15 USE write_field_mod 16 16 USE transfert_mod 17 17 USE time_mod -
codes/icosagcm/trunk/src/output_field.f90
r186 r347 14 14 USE getin_mod 15 15 USE xios_mod 16 USE write_field 16 USE write_field_mod 17 17 IMPLICIT NONE 18 18 … … 37 37 USE field_mod 38 38 USE xios_mod 39 USE write_field 39 USE write_field_mod 40 40 IMPLICIT NONE 41 41 CHARACTER(LEN=*),INTENT(IN) :: name_in -
codes/icosagcm/trunk/src/physics.f90
r327 r347 5 5 PRIVATE 6 6 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 8 8 9 9 INTEGER :: phys_type … … 27 27 USE etat0_venus_mod, ONLY : init_phys_venus=>init_physics 28 28 USE physics_lmdz_generic_mod, ONLY : init_physics_lmdz_generic=>init_physics 29 USE physics_external_mod, ONLY : init_physics_external=>init_physics 29 30 IMPLICIT NONE 30 31 … … 45 46 CALL init_physics_lmdz_generic 46 47 phys_type=phys_lmdz_generic 48 CASE ('phys_external') 49 CALL init_physics_external 50 phys_type=phys_external 47 51 CASE ('dcmip') 48 52 CALL allocate_field(f_dulon,field_t,type_real,llm, name='dulon') … … 55 59 CASE DEFAULT 56 60 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>' 58 63 STOP 59 64 END SELECT … … 66 71 USE physics_interface_mod 67 72 USE physics_lmdz_generic_mod, ONLY : physics_lmdz_generic => physics 73 USE physics_external_mod, ONLY : physics_external => physics 68 74 USE physics_dcmip_mod, ONLY : write_physics_dcmip => write_physics 69 75 USE etat0_heldsz_mod … … 96 102 CASE (phys_lmdz_generic) 97 103 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) 98 106 CASE(phys_LB2012) 99 107 CALL phys_venus(f_ps,f_theta_rhodz,f_ue) -
codes/icosagcm/trunk/src/time.f90
r327 r347 25 25 INTEGER,SAVE :: day_step,ndays 26 26 !$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 33 28 CHARACTER(LEN=255) :: time_style 34 29 !$OMP THREADPRIVATE(time_style) 35 INTEGER,SAVE:: an, mois, jour36 !$OMP THREADPRIVATE(an, mois, jour)37 REAL(rstd),SAVE:: heure38 !$OMP THREADPRIVATE(heure)39 CHARACTER (LEN=10):: calend40 !$OMP THREADPRIVATE(calend)41 30 42 31 PUBLIC create_time_counter_header, update_time_counter, close_time_counter, init_time, & 43 32 dt, write_period, itau_out, itau_adv, itau_dissip, itau_physics, itaumax, & 44 33 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 47 35 48 36 -
codes/icosagcm/trunk/src/timeloop_gcm.f90
r339 r347 40 40 USE check_conserve_mod 41 41 USE output_field_mod 42 USE write_field 42 USE write_field_mod 43 43 USE theta2theta_rhodz_mod 44 44 USE sponge_mod … … 246 246 247 247 DO stage=1,nb_stage 248 ! CALL checksum(f_ps) 249 ! CALL checksum(f_theta_rhodz) 250 ! CALL checksum(f_mass) 248 251 CALL caldyn((stage==1) .AND. (MOD(it,itau_out)==0), & 249 252 f_phis,f_ps,f_mass,f_theta_rhodz,f_u, f_q, & 250 253 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) 251 257 SELECT CASE (scheme) 252 258 CASE(euler) -
codes/icosagcm/trunk/src/write_etat0.f90
r266 r347 9 9 USE restart_mod 10 10 USE wind_mod 11 USE write_field 11 USE write_field_mod 12 12 IMPLICIT NONE 13 13 INTEGER,INTENT(IN) :: it -
codes/icosagcm/trunk/src/write_field.f90
r206 r347 1 module write_field 1 module write_field_mod 2 2 USE genmod 3 3 implicit none … … 1799 1799 end function int2str 1800 1800 1801 end module write_field 1801 end module write_field_mod 1802 1802
Note: See TracChangeset
for help on using the changeset viewer.