- Timestamp:
- Mar 17, 2022, 11:51:36 AM (3 years ago)
- Location:
- LMDZ6/trunk
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/build_gcm
r4096 r4103 33 33 ${dirname}fcm build $* 34 34 35 err=$? 36 # Check error message from fcm build 37 if [ $err != 0 ] ; then 38 # ERROR IN COMPILING 39 echo ERROR IN COMPILING LMDZ : $err 40 exit 1 41 fi 35 build_command_status=$? 42 36 43 37 # cleanup 44 38 \rm -f '.lock' 45 39 40 exit $build_command_status 41 -
LMDZ6/trunk/libf/dyn3dmem/gcm.F90
r4050 r4103 454 454 455 455 !!$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/,/logici/,/logicl/) 456 ! Copy all threadprivate variables in temps_mod logic_mod 456 457 !$OMP PARALLEL DEFAULT(SHARED) & 457 ! Copy all threadprivate variables in temps_mod458 458 !$OMP COPYIN(dt,jD_ref,jH_ref,start_time,hour_ini,day_ini,day_end) & 459 459 !$OMP COPYIN(annee_ref,day_ref,itau_dyn,itau_phy,itaufin,calend) & 460 ! Copy all threadprivate variables from logic_mod461 460 !$OMP COPYIN(purmats,forward,leapf,apphys,statcl,conser,apdiss,apdelq) & 462 461 !$OMP COPYIN(saison,ecripar,fxyhypb,ysinus,read_start,ok_guide) & -
LMDZ6/trunk/libf/dyn3dmem/vlsplt_loc.F
r4052 r4103 1074 1074 ENDDO 1075 1075 ENDDO 1076 c$OMP END DO NO 1076 c$OMP END DO NOWAIT 1077 1077 1078 1078 c Reindicage vertical en accumulant les flux sur … … 1114 1114 ENDDO 1115 1115 ENDDO 1116 c$OMP END DO NO 1116 c$OMP END DO NOWAIT 1117 1117 1118 1118 ENDDO ! WHILE (countcfl>=1) -
LMDZ6/trunk/libf/dynphy_lonlat/phylmd/iniphysiq_mod.F90
r4056 r4103 114 114 115 115 !!$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/) 116 !$OMP PARALLEL DEFAULT(SHARED) &117 116 ! Copy all threadprivate variables in temps_mod 118 !$OMP COPYIN(annee_ref, day_ini, day_ref,start_time)117 !$OMP PARALLEL DEFAULT(SHARED) COPYIN(annee_ref,day_ini,day_ref,start_time) 119 118 120 119 ! Initialize physical constants in physics: -
LMDZ6/trunk/libf/phy_common/mod_phys_lmdz_omp_transfert.F90
r3465 r4103 498 498 REAL,INTENT(OUT),DIMENSION(:) :: VarOut 499 499 500 CALL Check_buffer_r(size(VarOut)) 501 CALL gather_omp_rgen(VarIn,Varout,1,buffer_r) 500 CALL gather_omp_rgen(VarIn,Varout,1) 502 501 503 502 END SUBROUTINE gather_omp_r … … 509 508 REAL,INTENT(IN),DIMENSION(:,:) :: VarIn 510 509 REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut 511 512 CALL Check_buffer_r(size(VarOut)) 513 CALL gather_omp_rgen(VarIn,Varout,Size(VarIn,2),buffer_r) 510 511 CALL gather_omp_rgen(VarIn,Varout,Size(VarIn,2)) 514 512 515 513 END SUBROUTINE gather_omp_r1 … … 521 519 REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn 522 520 REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 523 524 CALL Check_buffer_r(size(VarOut)) 525 CALL gather_omp_rgen(VarIn,Varout,Size(VarIn,2)*Size(VarIn,3),buffer_r) 521 522 CALL gather_omp_rgen(VarIn,Varout,Size(VarIn,2)*Size(VarIn,3)) 526 523 527 524 END SUBROUTINE gather_omp_r2 … … 533 530 REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn 534 531 REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 535 536 CALL Check_buffer_r(size(VarOut)) 537 CALL gather_omp_rgen(VarIn,Varout,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4),buffer_r) 532 533 CALL gather_omp_rgen(VarIn,Varout,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4)) 538 534 539 535 END SUBROUTINE gather_omp_r3 … … 1071 1067 1072 1068 1073 SUBROUTINE gather_omp_rgen(VarIn,VarOut,dimsize ,Buff)1069 SUBROUTINE gather_omp_rgen(VarIn,VarOut,dimsize) 1074 1070 USE mod_phys_lmdz_omp_data 1075 1071 USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi … … 1078 1074 INTEGER,INTENT(IN) :: dimsize 1079 1075 REAL,INTENT(IN),DIMENSION(klon_omp,dimsize) :: VarIn 1080 REAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut 1081 REAL,INTENT(INOUT),DIMENSION(klon_mpi,dimsize) :: Buff 1076 REAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize),TARGET :: VarOut 1077 1078 REAL, POINTER, SAVE :: Varout_ptr(:,:) ! Shared between threads NOT THREADPRIVATE 1079 1080 INTEGER :: i,ij 1081 1082 !$omp master 1083 Varout_ptr => VarOut 1084 !$omp end master 1085 !$omp barrier 1086 1087 DO i=1,dimsize 1088 DO ij=1,klon_omp 1089 Varout_ptr(klon_omp_begin-1+ij,i)=VarIn(ij,i) 1090 ENDDO 1091 ENDDO 1092 !$omp barrier 1093 END SUBROUTINE gather_omp_rgen 1094 1095 1096 SUBROUTINE gather_omp_lgen(VarIn,VarOut,dimsize,Buff) 1097 USE mod_phys_lmdz_omp_data 1098 USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi 1099 IMPLICIT NONE 1100 1101 INTEGER,INTENT(IN) :: dimsize 1102 LOGICAL,INTENT(IN),DIMENSION(klon_omp,dimsize) :: VarIn 1103 LOGICAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut 1104 LOGICAL,INTENT(INOUT),DIMENSION(klon_mpi,dimsize) :: Buff 1082 1105 1083 1106 INTEGER :: i,ij … … 1100 1123 !$OMP BARRIER 1101 1124 1102 END SUBROUTINE gather_omp_rgen1103 1104 1105 SUBROUTINE gather_omp_lgen(VarIn,VarOut,dimsize,Buff)1106 USE mod_phys_lmdz_omp_data1107 USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi1108 IMPLICIT NONE1109 1110 INTEGER,INTENT(IN) :: dimsize1111 LOGICAL,INTENT(IN),DIMENSION(klon_omp,dimsize) :: VarIn1112 LOGICAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut1113 LOGICAL,INTENT(INOUT),DIMENSION(klon_mpi,dimsize) :: Buff1114 1115 INTEGER :: i,ij1116 1117 DO i=1,dimsize1118 DO ij=1,klon_omp1119 Buff(klon_omp_begin-1+ij,i)=VarIn(ij,i)1120 ENDDO1121 ENDDO1122 !$OMP BARRIER1123 1124 1125 !$OMP MASTER1126 DO i=1,dimsize1127 DO ij=1,klon_mpi1128 VarOut(ij,i)=Buff(ij,i)1129 ENDDO1130 ENDDO1131 !$OMP END MASTER1132 !$OMP BARRIER1133 1134 1125 END SUBROUTINE gather_omp_lgen 1135 1126 -
LMDZ6/trunk/libf/phylmd/cosp/dsd.F90
r2428 r4103 57 57 integer, intent(in) :: nsizes 58 58 integer, intent(in) :: dtype 59 real*8, intent(in) :: Q,Re ,Np,D(nsizes)59 real*8, intent(in) :: Q,Re_,Np,D(nsizes) 60 60 real*8, intent(in) :: rho_a,tk,dmin,dmax,rho_c,p1,p2,p3 61 61 … … 78 78 real*8 :: tmp1, tmp2 79 79 real*8 :: pi,rc,tc 80 real*8 :: Re 80 81 81 82 integer k,lidx,uidx 83 84 Re = Re_ 82 85 83 86 tc = tk - 273.15 -
LMDZ6/trunk/libf/phylmd/cosp/radar_simulator.F90
r2428 r4103 96 96 real*8, dimension(hp%nhclass,nprof,ngate), intent(in) :: hm_matrix 97 97 real*8, dimension(hp%nhclass,nprof,ngate), intent(inout) :: re_matrix 98 real*8, dimension(hp%nhclass,nprof,ngate), intent(in ) :: Np_matrix98 real*8, dimension(hp%nhclass,nprof,ngate), intent(inout) :: Np_matrix 99 99 100 100 ! ----- OUTPUTS ----- -
LMDZ6/trunk/libf/phylmd/iophy.F90
r4046 r4103 975 975 USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat, grid_type, unstructured, regular_lonlat 976 976 #ifdef CPP_XIOS 977 USE xios, ONLY: xios_send_field 977 USE xios, ONLY: xios_send_field, xios_field_is_active 978 978 #endif 979 979 USE print_control_mod, ONLY: lunout, prt_level … … 996 996 INTEGER :: ip 997 997 REAL, ALLOCATABLE, DIMENSION(:) :: fieldok 998 logical, save :: is_active = .true. 998 999 999 1000 IF (check_dim .AND. is_master) WRITE(lunout,*)'histwrite2d_phy for ',trim(var%name) … … 1035 1036 1036 1037 ELSE 1038 #ifdef CPP_XIOS 1039 IF (ok_all_xml) THEN 1040 !$omp barrier 1041 !$omp master 1042 is_active = xios_field_is_active(var%name, at_current_timestep_arg=.false.) 1043 !$omp end master 1044 !$omp barrier 1045 IF(.not. is_active) RETURN 1046 ENDIF 1047 #endif 1037 1048 1038 1049 !Et sinon on.... écrit … … 1176 1187 USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat, grid_type, regular_lonlat, unstructured 1177 1188 #ifdef CPP_XIOS 1178 USE xios, ONLY: xios_send_field 1189 USE xios, ONLY: xios_send_field, xios_field_is_active 1179 1190 #endif 1180 1191 USE print_control_mod, ONLY: prt_level,lunout … … 1195 1206 INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d 1196 1207 REAL,ALLOCATABLE, DIMENSION(:,:) :: fieldok 1208 logical, save :: is_active = .true. 1197 1209 1198 1210 IF (check_dim .AND. is_master) WRITE(lunout,*)'histwrite3d_phy for ', trim(var%name) … … 1222 1234 CALL bcast_omp(swaerofree_diag) 1223 1235 ELSE 1236 #ifdef CPP_XIOS 1237 IF (ok_all_xml) THEN 1238 !$omp barrier 1239 !$omp master 1240 is_active = xios_field_is_active(var%name, at_current_timestep_arg=.false.) 1241 !$omp end master 1242 !$omp barrier 1243 IF(.not. is_active) RETURN 1244 ENDIF 1245 #endif 1246 1224 1247 !Et sinon on.... écrit 1225 1226 1248 IF (SIZE(field,1)/=klon .AND. SIZE(field,1)/=klev .AND. SIZE(field,1)/=klev+1) CALL abort_physic('iophy::histwrite3d_phy','Field first DIMENSION not equal to klon/klev',1) 1227 1249 -
LMDZ6/trunk/libf/phylmd/mo_simple_plumes.F90
r3531 r4103 280 280 281 281 IF ((iweek > ntimes) .OR. (iweek < 1) .OR. (iyear > nyears) .OR. (iyear < 1)) THEN 282 CALL abort_physic('set_time_weight','Time out of bounds' )282 CALL abort_physic('set_time_weight','Time out of bounds',1) 283 283 ENDIF 284 284 -
LMDZ6/trunk/libf/phylmd/o3_chem_m.F90
r2346 r4103 85 85 ! Heterogeneous chemistry is only during daytime: 86 86 call orbite(real(julien), earth_long, trash1) 87 call zenang(earth_long, gmtime, pdtphys, rlat, rlon, pmu0, trash2)87 call zenang(earth_long, gmtime, 0., pdtphys, rlat, rlon, pmu0, trash2) 88 88 forall (k = 1: nbp_lev) 89 89 where (pmu0 <= cos(87. / 180. * pi)) b(:, k) = 0. -
LMDZ6/trunk/libf/phylmd/readaerosol_mod.F90
r3440 r4103 10 10 !$OMP THREADPRIVATE(nbp_lat_src) 11 11 REAL, ALLOCATABLE, SAVE :: psurf_interp(:,:) 12 !$OMP THREADPRIVATE(psurf_interp)13 12 14 13 CONTAINS … … 692 691 CALL xios_send_field("load_"//TRIM(varname)//"_in",load_glo2D) 693 692 CALL xios_recv_field("load_"//TRIM(varname)//"_out",load_out_mpi) 694 IF (first) THEN 693 IF (.not. allocated(psurf_interp)) THEN 694 ! psurf_interp is a shared array 695 695 ALLOCATE(psurf_interp(klon_mpi,12)) 696 696 CALL xios_send_field("psurf_aerosol_in",psurf_glo2D) -
LMDZ6/trunk/libf/phylmd/rrtm/abor1.intfb.h
r1990 r4103 1 1 INTERFACE 2 2 SUBROUTINE ABOR1(CDTEXT) 3 CHARACTER(LEN=*) :: CDTEXT3 CHARACTER(LEN=*), INTENT(IN) :: CDTEXT 4 4 END SUBROUTINE ABOR1 5 5 END INTERFACE -
LMDZ6/trunk/libf/phylmd/rrtm/tpm_fft.F90
r2010 r4103 7 7 8 8 TYPE FFT_TYPE 9 REAL(KIND=JPRB) , POINTER:: TRIGS(:,:)10 INTEGER(KIND=JPIM), POINTER:: NFAX(:,:)9 REAL(KIND=JPRB) ,ALLOCATABLE :: TRIGS(:,:) 10 INTEGER(KIND=JPIM),ALLOCATABLE :: NFAX(:,:) 11 11 END TYPE FFT_TYPE 12 12 -
LMDZ6/trunk/makelmdz_fcm
r4096 r4103 770 770 fi 771 771 772 set +e 773 772 774 rm -f $LIBOGCM/${arch}${SUFF_NAME}/.config/fcm.bld.lock 773 775 ./build_gcm ${fcm_path} -j $job $full 776 build_status=$? 774 777 775 778 err=$? … … 790 793 \rm -f $LIBFGCM/grid/dimensions.h 791 794 fi 795 796 exit $build_status
Note: See TracChangeset
for help on using the changeset viewer.