Changeset 1114 for LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/leapfrog_p.F
- Timestamp:
- Mar 3, 2009, 5:40:26 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/leapfrog_p.F
r1000 r1114 9 9 #define CPP_IOIPSL 10 10 11 SUBROUTINE leapfrog_p(ucov,vcov,teta,ps,masse,phis, nq,q,clesphy0,11 SUBROUTINE leapfrog_p(ucov,vcov,teta,ps,masse,phis,q,clesphy0, 12 12 & time_0) 13 13 … … 21 21 USE vampir 22 22 USE timer_filtre, ONLY : print_filtre_timer 23 USE infotrac 23 24 24 25 IMPLICIT NONE … … 69 70 #include "com_io_dyn.h" 70 71 #include "iniprint.h" 71 72 c#include "tracstoke.h"73 74 72 #include "academic.h" 75 !#include "clesphys.h"76 #include "advtrac.h"77 73 78 integer nq79 80 74 INTEGER longcles 81 75 PARAMETER ( longcles = 20 ) … … 88 82 REAL :: vcov(ip1jm,llm),ucov(ip1jmp1,llm) ! vents covariants 89 83 REAL :: teta(ip1jmp1,llm) ! temperature potentielle 90 REAL :: q(ip1jmp1,llm,nq mx)! champs advectes84 REAL :: q(ip1jmp1,llm,nqtot) ! champs advectes 91 85 REAL :: ps(ip1jmp1) ! pression au sol 92 86 REAL,SAVE :: p (ip1jmp1,llmp1 ) ! pression aux interfac.des couches … … 109 103 c tendances dynamiques 110 104 REAL,SAVE :: dv(ip1jm,llm),du(ip1jmp1,llm) 111 REAL,SAVE :: dteta(ip1jmp1,llm),dq(ip1jmp1,llm,nqmx),dp(ip1jmp1) 105 REAL,SAVE :: dteta(ip1jmp1,llm),dp(ip1jmp1) 106 REAL,DIMENSION(:,:,:), ALLOCATABLE, SAVE :: dq 112 107 113 108 c tendances de la dissipation … … 118 113 REAL,SAVE :: dvfi(ip1jm,llm),dufi(ip1jmp1,llm) 119 114 REAL,SAVE :: dtetafi(ip1jmp1,llm) 120 REAL,SAVE :: dqfi(ip1jmp1,llm,nqmx),dpfi(ip1jmp1) 115 REAL,SAVE :: dpfi(ip1jmp1) 116 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: dqfi 121 117 122 118 c variables pour le fichier histoire … … 186 182 type(Request) :: Request_physic 187 183 REAL,SAVE :: dvfi_tmp(iip1,llm),dufi_tmp(iip1,llm) 188 REAL,SAVE :: dtetafi_tmp(iip1,llm),dqfi_tmp(iip1,llm,nqmx) 184 REAL,SAVE :: dtetafi_tmp(iip1,llm) 185 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: dqfi_tmp 189 186 REAL,SAVE :: dpfi_tmp(iip1) 190 187 … … 195 192 INTEGER :: var_time 196 193 LOGICAL :: ok_start_timer=.FALSE. 194 LOGICAL, SAVE :: firstcall=.TRUE. 197 195 198 196 c$OMP MASTER … … 208 206 itaufin = nday*day_step 209 207 itaufinp1 = itaufin +1 210 208 modname="leapfrog_p" 211 209 212 210 itau = 0 … … 217 215 iday = iday+1 218 216 ENDIF 217 218 c Allocate variables depending on dynamic variable nqtot 219 c$OMP MASTER 220 IF (firstcall) THEN 221 firstcall=.FALSE. 222 ALLOCATE(dq(ip1jmp1,llm,nqtot)) 223 ALLOCATE(dqfi(ip1jmp1,llm,nqtot)) 224 ALLOCATE(dqfi_tmp(iip1,llm,nqtot)) 225 END IF 226 c$OMP END MASTER 227 c$OMP BARRIER 219 228 220 229 c----------------------------------------------------------------------- … … 455 464 & jj_Nb_caldyn,0,0,TestRequest) 456 465 457 do j=1,nq mx466 do j=1,nqtot 458 467 call Register_SwapFieldHallo(q(1,1,j),q(1,1,j),ip1jmp1,llm, 459 468 & jj_nb_caldyn,0,0,TestRequest) … … 490 499 call Register_Hallo(p,ip1jmp1,llmp1,1,1,1,1,TestRequest) 491 500 492 c do j=1,nq mx501 c do j=1,nqtot 493 502 c call Register_Hallo(q(1,1,j),ip1jmp1,llm,1,1,1,1, 494 503 c * TestRequest) … … 516 525 call WriteField_p('pkf',reshape(pkf,(/iip1,jmp1,llm/))) 517 526 call WriteField_p('phis',reshape(phis,(/iip1,jmp1/))) 518 do j=1,nq mx527 do j=1,nqtot 519 528 call WriteField_p('q'//trim(int2str(j)), 520 529 . reshape(q(:,:,j),(/iip1,jmp1,llm/))) … … 608 617 c$OMP BARRIER 609 618 ! CALL FTRACE_REGION_BEGIN("integrd") 619 610 620 CALL integrd_p ( 2,vcovm1,ucovm1,tetam1,psm1,massem1 , 611 621 $ dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps,masse,phis , … … 625 635 c 626 636 c call WriteField_p('ps',reshape(ps,(/iip1,jmp1/))) 627 c do j=1,nq mx637 c do j=1,nqtot 628 638 c call WriteField_p('q'//trim(int2str(j)), 629 639 c . reshape(q(:,:,j),(/iip1,jmp1,llm/))) … … 669 679 670 680 c$OMP BARRIER 671 672 681 CALL exner_hyb_p( ip1jmp1, ps, p,alpha,beta,pks, pk, pkf ) 673 682 c$OMP BARRIER … … 725 734 726 735 c call SetDistrib(jj_nb_vanleer) 727 do j=1,nq mx736 do j=1,nqtot 728 737 729 738 call Register_SwapFieldHallo(q(1,1,j),q(1,1,j),ip1jmp1,llm, … … 756 765 cc$OMP BARRIER 757 766 ! CALL FTRACE_REGION_BEGIN("calfis") 758 CALL calfis_p( nq,lafin ,rdayvrai,time ,767 CALL calfis_p(lafin ,rdayvrai,time , 759 768 $ ucov,vcov,teta,q,masse,ps,p,pk,phis,phi , 760 769 $ du,dv,dteta,dq, … … 799 808 * 1,0,0,1,Request_physic) 800 809 801 do j=1,nq mx810 do j=1,nqtot 802 811 call Register_Hallo(dqfi(1,1,j),ip1jmp1,llm, 803 812 * 1,0,0,1,Request_physic) … … 842 851 cc$OMP END MASTER 843 852 c 844 c do j=1,nq mx853 c do j=1,nqtot 845 854 c call WriteField_p('dqfi'//trim(int2str(j)), 846 855 c . reshape(dqfi(:,:,j),(/iip1,jmp1,llm/))) … … 853 862 ENDIF 854 863 855 CALL addfi_p( nqmx,dtphys, leapf, forward ,864 CALL addfi_p( dtphys, leapf, forward , 856 865 $ ucov, vcov, teta , q ,ps , 857 866 $ dufi, dvfi, dtetafi , dqfi ,dpfi ) … … 889 898 * jj_Nb_caldyn,Request_physic) 890 899 891 do j=1,nq mx900 do j=1,nqtot 892 901 893 902 call Register_SwapField(q(1,1,j),q(1,1,j),ip1jmp1,llm, … … 954 963 CALL pression_p ( ip1jmp1, ap, bp, ps, p ) 955 964 c$OMP BARRIER 956 957 958 965 CALL exner_hyb_p( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 959 966 c$OMP BARRIER … … 1291 1298 c$OMP BARRIER 1292 1299 c$OMP MASTER 1293 CALL writedynav_p(histaveid, nqmx,itau,vcov ,1300 CALL writedynav_p(histaveid, itau,vcov , 1294 1301 , ucov,teta,pk,phi,q,masse,ps,phis) 1295 1302 c$OMP END MASTER … … 1339 1346 #ifdef CPP_IOIPSL 1340 1347 1341 CALL writehist_p(histid,histvid, nqmx,itau,vcov,1348 CALL writehist_p(histid,histvid, itau,vcov, 1342 1349 s ucov,teta,phi,q,masse,ps,phis) 1343 1350 … … 1354 1361 1355 1362 CALL dynredem1_p("restart.nc",0.0, 1356 , vcov,ucov,teta,q, nqmx,masse,ps)1363 , vcov,ucov,teta,q,masse,ps) 1357 1364 c#endif 1358 1365 … … 1437 1444 c$OMP BARRIER 1438 1445 c$OMP MASTER 1439 CALL writedynav_p(histaveid, nqmx,itau,vcov ,1446 CALL writedynav_p(histaveid, itau,vcov , 1440 1447 , ucov,teta,pk,phi,q,masse,ps,phis) 1441 1448 call bilan_dyn_p (2,dtvr*iperiod,dtvr*day_step*periodav, … … 1480 1487 #ifdef CPP_IOIPSL 1481 1488 1482 CALL writehist_p( histid, histvid, nqmx,itau,vcov ,1489 CALL writehist_p( histid, histvid, itau,vcov , 1483 1490 , ucov,teta,phi,q,masse,ps,phis) 1484 1491 c#else … … 1487 1494 c call Gather_Field(teta,ip1jmp1,llm,0) 1488 1495 c call Gather_Field(ps,ip1jmp1,1,0) 1489 c do iq=1,nq mx1496 c do iq=1,nqtot 1490 1497 c call Gather_Field(q(1,1,iq),ip1jmp1,llm,0) 1491 1498 c enddo … … 1502 1509 c$OMP MASTER 1503 1510 CALL dynredem1_p("restart.nc",0.0, 1504 . vcov,ucov,teta,q, nqmx,masse,ps)1511 . vcov,ucov,teta,q,masse,ps) 1505 1512 c$OMP END MASTER 1506 1513 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.