- Timestamp:
- Oct 29, 2012, 5:27:03 PM (12 years ago)
- Location:
- LMDZ5/trunk/libf
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/dyn3d/fxhyp.F
r1403 r1674 68 68 xzoom = xzoomdeg * pi/180. 69 69 c 70 if (iim==1) then 71 72 rlonm025(1)=-pi/2. 73 rlonv(1)=0. 74 rlonu(1)=pi 75 rlonp025(1)=pi/2. 76 rlonm025(2)=rlonm025(1)+depi 77 rlonv(2)=rlonv(1)+depi 78 rlonu(2)=rlonu(1)+depi 79 rlonp025(2)=rlonp025(1)+depi 80 81 xprimm025(:)=1. 82 xprimv(:)=1. 83 xprimu(:)=1. 84 xprimp025(:)=1. 85 champmin=depi 86 champmax=depi 87 return 88 89 endif 90 70 91 decalx = .75 71 92 IF( grossism.EQ.1..AND.scal180 ) THEN … … 286 307 287 308 309 288 310 IF(ik.EQ.1.and.grossism.EQ.1.) THEN 289 311 xvrai(1) = xvrai(iip1)-depi 290 312 xxprim(1) = xxprim(iip1) 291 313 ENDIF 314 292 315 DO i = 1 , iim 293 316 xlon(i) = xvrai(i) -
LMDZ5/trunk/libf/dyn3d/groupe.F
r524 r1674 38 38 integer i,j,l 39 39 40 logical firstcall 41 save firstcall 40 logical firstcall,groupe_ok 41 save firstcall,groupe_ok 42 42 43 43 data firstcall/.true./ 44 data groupe_ok/.true./ 45 46 if (iim==1) then 47 groupe_ok=.false. 48 endif 44 49 45 50 if (firstcall) then 46 if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre ede point' 51 if (groupe_ok) then 52 if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre de point' 53 endif 47 54 firstcall=.false. 48 55 endif 56 49 57 50 58 c Champs 1D … … 52 60 call convflu(pbaru,pbarv,llm,zconvm) 53 61 54 c55 62 call scopy(ijp1llm,zconvm,1,zconvmm,1) 56 63 call scopy(ijmllm,pbarv,1,pbarvm,1) 57 64 58 c 65 if (groupe_ok) then 59 66 call groupeun(jjp1,llm,zconvmm) 60 67 call groupeun(jjm,llm,pbarvm) 61 68 62 69 c Champs 3D 63 64 70 do l=1,llm 65 71 do j=2,jjm … … 74 80 enddo 75 81 enddo 82 83 else 84 pbarum(:,:,:)=pbaru(:,:,:) 85 pbarvm(:,:,:)=pbarv(:,:,:) 86 endif 76 87 77 88 c integration de la convergence de masse de haut en bas ...... -
LMDZ5/trunk/libf/dyn3d/paramet.h
r792 r1674 17 17 INTEGER jcfil,jcfllm 18 18 19 PARAMETER( iip1= iim+1 -1/iim,iip2=iim+2,iip3=iim+3&19 PARAMETER( iip1= iim+1,iip2=iim+2,iip3=iim+3 & 20 20 & ,jjp1=jjm+1-1/jjm) 21 21 PARAMETER( llmp1 = llm+1, llmp2 = llm+2, llmm1 = llm-1 ) -
LMDZ5/trunk/libf/dyn3dpar/fxhyp.F
r1403 r1674 48 48 c 49 49 REAL dzoom 50 REAL *8xlon(iip1),xprimm(iip1),xuv51 REAL *8xtild(0:nmax2)52 REAL *8fhyp(0:nmax2),ffdx,beta,Xprimt(0:nmax2)53 REAL *8Xf(0:nmax2),xxpr(0:nmax2)54 REAL *8xvrai(iip1),xxprim(iip1)55 REAL *8pi,depi,epsilon,xzoom,fa,fb56 REAL *8Xf1, Xfi , a0,a1,a2,a3,xi250 REAL(KIND=8) xlon(iip1),xprimm(iip1),xuv 51 REAL(KIND=8) xtild(0:nmax2) 52 REAL(KIND=8) fhyp(0:nmax2),ffdx,beta,Xprimt(0:nmax2) 53 REAL(KIND=8) Xf(0:nmax2),xxpr(0:nmax2) 54 REAL(KIND=8) xvrai(iip1),xxprim(iip1) 55 REAL(KIND=8) pi,depi,epsilon,xzoom,fa,fb 56 REAL(KIND=8) Xf1, Xfi , a0,a1,a2,a3,xi2 57 57 INTEGER i,it,ik,iter,ii,idif,ii1,ii2 58 REAL *8xi,xo1,xmoy,xlon2,fxm,Xprimin59 REAL *8champmin,champmax,decalx58 REAL(KIND=8) xi,xo1,xmoy,xlon2,fxm,Xprimin 59 REAL(KIND=8) champmin,champmax,decalx 60 60 INTEGER is2 61 61 SAVE is2 62 62 63 REAL *8heavyside63 REAL(KIND=8) heavyside 64 64 65 65 pi = 2. * ASIN(1.) … … 68 68 xzoom = xzoomdeg * pi/180. 69 69 c 70 if (iim==1) then 71 72 print*,'Longitudes calculees a la main pour iim=1' 73 74 rlonm025(1)=-pi/2. 75 rlonv(1)=0. 76 rlonu(1)=pi 77 rlonp025(1)=pi/2. 78 rlonm025(2)=rlonm025(1)+depi 79 rlonv(2)=rlonv(1)+depi 80 rlonu(2)=rlonu(1)+depi 81 rlonp025(2)=rlonp025(1)+depi 82 83 xprimm025(:)=1. 84 xprimv(:)=1. 85 xprimu(:)=1. 86 xprimp025(:)=1. 87 champmin=depi 88 champmax=depi 89 return 90 91 endif 92 70 93 decalx = .75 71 94 IF( grossism.EQ.1..AND.scal180 ) THEN … … 286 309 287 310 311 288 312 IF(ik.EQ.1.and.grossism.EQ.1.) THEN 289 313 xvrai(1) = xvrai(iip1)-depi 290 314 xxprim(1) = xxprim(iip1) 291 315 ENDIF 316 292 317 DO i = 1 , iim 293 318 xlon(i) = xvrai(i) -
LMDZ5/trunk/libf/dyn3dpar/groupe_p.F
r764 r1674 37 37 integer i,j,l 38 38 39 logical firstcall 40 save firstcall 41 c$OMP THREADPRIVATE(firstcall )39 logical firstcall,groupe_ok 40 save firstcall,groupe_ok 41 c$OMP THREADPRIVATE(firstcall,groupe_ok) 42 42 43 43 data firstcall/.true./ 44 data groupe_ok/.true./ 45 44 46 integer ijb,ije,jjb,jje 45 47 48 if (iim==1) then 49 groupe_ok=.false. 50 endif 51 46 52 if (firstcall) then 47 if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre ede point' 53 if (groupe_ok) then 54 if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre de point' 55 endif 48 56 firstcall=.false. 49 57 endif … … 66 74 c$OMP END DO NOWAIT 67 75 68 call groupeun_p(jjp1,llm,jjb,jje,zconvmm) 76 if (groupe_ok) then 77 call groupeun_p(jjp1,llm,jjb,jje,zconvmm) 78 endif 69 79 70 80 jjb=jj_begin-1 … … 78 88 c$OMP END DO NOWAIT 79 89 80 call groupeun_p(jjm,llm,jjb,jje,pbarvm) 90 if (groupe_ok) then 91 call groupeun_p(jjm,llm,jjb,jje,pbarvm) 92 endif 81 93 82 94 c Champs 3D … … 101 113 enddo 102 114 c$OMP END DO NOWAIT 115 103 116 c integration de la convergence de masse de haut en bas ...... 104 117 -
LMDZ5/trunk/libf/dyn3dpar/paramet.h
r792 r1674 17 17 INTEGER jcfil,jcfllm 18 18 19 PARAMETER( iip1= iim+1 -1/iim,iip2=iim+2,iip3=iim+3&19 PARAMETER( iip1= iim+1,iip2=iim+2,iip3=iim+3 & 20 20 & ,jjp1=jjm+1-1/jjm) 21 21 PARAMETER( llmp1 = llm+1, llmp2 = llm+2, llmm1 = llm-1 ) -
LMDZ5/trunk/libf/phylmd/iophy.F90
r1539 r1674 51 51 52 52 !$OMP MASTER 53 ALLOCATE(io_lat(jjm+1-1/ iim))53 ALLOCATE(io_lat(jjm+1-1/(iim*jjm))) 54 54 io_lat(1)=rlat_glo(1) 55 io_lat(jjm+1-1/ iim)=rlat_glo(klon_glo)56 IF ( iim> 1) then55 io_lat(jjm+1-1/(iim*jjm))=rlat_glo(klon_glo) 56 IF ((iim*jjm) > 1) then 57 57 DO i=2,jjm 58 58 io_lat(i)=rlat_glo(2+(i-2)*iim) … … 61 61 62 62 ALLOCATE(io_lon(iim)) 63 io_lon(:)=rlon_glo(2-1/ iim:iim+1-1/iim)63 io_lon(:)=rlon_glo(2-1/(iim*jjm):iim+1-1/(iim*jjm)) 64 64 65 65 ddid=(/ 1,2 /) 66 dsg=(/ iim, jjm+1-1/ iim/)66 dsg=(/ iim, jjm+1-1/(iim*jjm) /) 67 67 dsl=(/ iim, jj_nb /) 68 68 dpf=(/ 1,jj_begin /) … … 89 89 include 'dimensions.h' 90 90 real,dimension(iim),intent(in) :: lon 91 real,dimension(jjm+1-1/ iim),intent(in) :: lat91 real,dimension(jjm+1-1/(iim*jjm)),intent(in) :: lat 92 92 93 93 INTEGER,DIMENSION(2) :: ddid … … 100 100 101 101 !$OMP MASTER 102 allocate(io_lat(jjm+1-1/ iim))102 allocate(io_lat(jjm+1-1/(iim*jjm))) 103 103 io_lat(:)=lat(:) 104 104 allocate(io_lon(iim)) … … 106 106 107 107 ddid=(/ 1,2 /) 108 dsg=(/ iim, jjm+1-1/ iim/)108 dsg=(/ iim, jjm+1-1/(iim*jjm) /) 109 109 dsl=(/ iim, jj_nb /) 110 110 dpf=(/ 1,jj_begin /) … … 234 234 235 235 CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlon_glo,zx_lon) 236 if ( iim.gt.1) then236 if ((iim*jjm).gt.1) then 237 237 DO i = 1, iim 238 238 zx_lon(i,1) = rlon_glo(i+1) -
LMDZ5/trunk/libf/phylmd/phyetat0.F
r1619 r1674 76 76 c FH1D 77 77 c real iolat(jjm+1) 78 real iolat(jjm+1-1/ iim)78 real iolat(jjm+1-1/(iim*jjm)) 79 79 c 80 80 c Ouvrir le fichier contenant l'etat initial:
Note: See TracChangeset
for help on using the changeset viewer.