Changeset 704 for LMDZ4/branches/V3_test/libf/phylmd/readsulfate.F
- Timestamp:
- Aug 17, 2006, 5:41:51 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/V3_test/libf/phylmd/readsulfate.F
r640 r704 2 2 ! $Header$ 3 3 ! 4 SUBROUTINE readsulfate (r_day, first, sulfate )5 4 SUBROUTINE readsulfate (r_day, first, sulfate_p) 5 USE dimphy, klon=>klon2,klon2=>klon 6 6 IMPLICIT none 7 7 … … 34 34 #include "chem.h" 35 35 #include "dimensions.h" 36 #include "dimphy.h"36 cym#include "dimphy.h" 37 37 #include "temps.h" 38 38 c … … 45 45 c Output: 46 46 c ------- 47 REAL*8 sulfate_p(klon_omp,klev) 47 48 REAL*8 sulfate (klon, klev) ! Mass of sulfate (monthly mean data, 48 49 ! from file) [ug SO4/m3] 50 REAL*8,SAVE,ALLOCATABLE :: sulfate_mpi(:,:) 49 51 c 50 52 c Local Variables: … … 62 64 REAL*8 so4_2(iim, jjm+1, klev, 12) ! The sulfate distributions 63 65 64 REAL*8 so4(klon, klev, 12) ! SO4 in right dimension 65 SAVE so4 66 REAL*8 so4_out(klon, klev) 67 SAVE so4_out 66 cym REAL*8 so4(klon, klev, 12) ! SO4 in right dimension 67 cym SAVE so4 68 cym REAL*8 so4_out(klon, klev) 69 cym SAVE so4_out 70 71 REAL*8,allocatable,save :: so4(:, :, :) ! SO4 in right dimension 72 REAL*8,allocatable,save :: so4_out(:, :) 73 c$OMP THREADPRIVATE(so4,so4_out) 68 74 69 75 LOGICAL lnewday 70 76 LOGICAL lonlyone 71 77 PARAMETER (lonlyone=.FALSE.) 72 78 logical,save :: first2=.true. 79 c$OMP THREADPRIVATE(first2) 80 81 c$OMP MASTER 82 if (first2) then 83 84 allocate( so4(klon, klev, 12) ) 85 allocate( so4_out(klon, klev)) 86 allocate(sulfate_mpi(klon_mpi,klev)) 87 first2=.false. 88 89 endif 90 91 if (phy_rank==0) then 92 73 93 iday = INT(r_day) 74 94 … … 265 285 266 286 ENDIF ! Did I have to do anything (was it a new day?) 267 287 288 endif ! phy_rank==0 289 290 call ScatterField(sulfate,sulfate_mpi,klev) 291 c$OMP END MASTER 292 call ScatterField_omp(sulfate_mpi,sulfate_p,klev) 293 268 294 RETURN 269 295 END … … 277 303 c----------------------------------------------------------------------------- 278 304 279 SUBROUTINE readsulfate_preind (r_day, first, pi_sulfate )280 305 SUBROUTINE readsulfate_preind (r_day, first, pi_sulfate_p) 306 USE dimphy, klon=>klon2,klon2=>klon 281 307 IMPLICIT none 282 308 … … 305 331 #include "chem.h" 306 332 #include "dimensions.h" 307 #include "dimphy.h"333 cym#include "dimphy.h" 308 334 #include "temps.h" 309 335 c … … 316 342 c Output: 317 343 c ------- 344 REAL*8 pi_sulfate_p (klon_omp, klev) 345 318 346 REAL*8 pi_sulfate (klon, klev) ! Number conc. sulfate (monthly mean data, 319 ! from file) 347 ! from fil 348 REAL*8,SAVE,ALLOCATABLE :: pi_sulfate_mpi(:,:) 320 349 c 321 350 c Local Variables: … … 327 356 INTEGER im, day1, day2, im2, ismaller 328 357 REAL*8 pi_so4_1(iim, jjm+1, klev, 12) 329 330 REAL*8 pi_so4(klon, klev, 12) ! SO4 in right dimension 331 SAVE pi_so4 332 REAL*8 pi_so4_out(klon, klev) 333 SAVE pi_so4_out 358 359 cym REAL*8 pi_so4(klon, klev, 12) ! SO4 in right dimension 360 cym SAVE pi_so4 361 cym REAL*8 pi_so4_out(klon, klev) 362 cym SAVE pi_so4_out 363 364 REAL*8,allocatable,save :: pi_so4(:, :, :) ! SO4 in right dimension 365 REAL*8,allocatable,save :: pi_so4_out(:, :) 366 c$OMP THREADPRIVATE(pi_so4,pi_so4_out) 334 367 335 368 CHARACTER*4 cyear 336 369 LOGICAL lnewday 337 370 logical,save :: first2=.true. 371 c$OMP THREADPRIVATE(first2) 372 373 c$OMP MASTER 374 if (first2) then 375 376 allocate( pi_so4(klon, klev, 12) ) 377 allocate( pi_so4_out(klon, klev)) 378 allocate(pi_sulfate_mpi (klon_mpi, klev)) 379 first2=.false. 380 381 endif 382 383 if (phy_rank==0) then 384 338 385 339 386 … … 479 526 480 527 ENDIF ! Was this the beginning of a new day? 528 529 endif ! phy_rank==0 530 531 call ScatterField(pi_sulfate,pi_sulfate_mpi,klev) 532 c$OMP END MASTER 533 call ScatterField_omp(pi_sulfate_mpi,pi_sulfate_p,klev) 534 481 535 RETURN 482 536 END
Note: See TracChangeset
for help on using the changeset viewer.