Changeset 495 for LMDZ.3.3/branches/rel-LF/libf/phylmd/cv3_routines.F
- Timestamp:
- Mar 4, 2004, 4:11:16 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ.3.3/branches/rel-LF/libf/phylmd/cv3_routines.F
r486 r495 804 804 110 continue 805 805 806 do 121 j=1,ntra 807 ccccc do 111 k=1,nl+1 808 do 111 k=1,nd 809 nn=0 810 do 101 i=1,len 811 if(iflag1(i).eq.0)then 812 nn=nn+1 813 tra(nn,k,j)=tra1(i,k,j) 814 endif 815 101 continue 816 111 continue 817 121 continue 806 c do 121 j=1,ntra 807 c do 111 k=1,nd 808 c nn=0 809 c do 101 i=1,len 810 c if(iflag1(i).eq.0)then 811 c nn=nn+1 812 c tra(nn,k,j)=tra1(i,k,j) 813 c endif 814 c 101 continue 815 c 111 continue 816 c 121 continue 818 817 819 818 if (nn.ne.ncum) then … … 1493 1492 400 continue 1494 1493 1495 do k=1,ntra1496 do j=1,nd ! instead nlp1497 do i=1,nd ! instead nlp1498 do il=1,ncum1499 traent(il,i,j,k)=tra(il,j,k)1500 enddo1501 enddo1502 enddo1503 enddo1494 c do k=1,ntra 1495 c do j=1,nd ! instead nlp 1496 c do i=1,nd ! instead nlp 1497 c do il=1,ncum 1498 c traent(il,i,j,k)=tra(il,j,k) 1499 c enddo 1500 c enddo 1501 c enddo 1502 c enddo 1504 1503 zm(:,:)=0. 1505 1504 … … 1557 1556 710 continue 1558 1557 1559 do k=1,ntra1560 do j=minorig,nl1561 do il=1,ncum1562 if( (i.ge.icb(il)).and.(i.le.inb(il)).and.1563 : (j.ge.(icb(il)-1)).and.(j.le.inb(il)))then1564 traent(il,i,j,k)=sij(il,i,j)*tra(il,i,k)1565 : +(1.-sij(il,i,j))*tra(il,nk(il),k)1566 endif1567 enddo1568 enddo1569 enddo1558 c do k=1,ntra 1559 c do j=minorig,nl 1560 c do il=1,ncum 1561 c if( (i.ge.icb(il)).and.(i.le.inb(il)).and. 1562 c : (j.ge.(icb(il)-1)).and.(j.le.inb(il)))then 1563 c traent(il,i,j,k)=sij(il,i,j)*tra(il,i,k) 1564 c : +(1.-sij(il,i,j))*tra(il,nk(il),k) 1565 c endif 1566 c enddo 1567 c enddo 1568 c enddo 1570 1569 1571 1570 c … … 1590 1589 750 continue 1591 1590 1592 do j=1,ntra1593 do i=minorig+1,nl1594 do il=1,ncum1595 if (i.ge.icb(il) .and. i.le.inb(il) .and. nent(il,i).eq.0) then1596 traent(il,i,i,j)=tra(il,nk(il),j)1597 endif1598 enddo1599 enddo1600 enddo1591 c do j=1,ntra 1592 c do i=minorig+1,nl 1593 c do il=1,ncum 1594 c if (i.ge.icb(il) .and. i.le.inb(il) .and. nent(il,i).eq.0) then 1595 c traent(il,i,i,j)=tra(il,nk(il),j) 1596 c endif 1597 c enddo 1598 c enddo 1599 c enddo 1601 1600 1602 1601 do 100 j=minorig,nl … … 1764 1763 enddo ! il 1765 1764 1766 do j=1,ntra 1767 do il=1,ncum 1768 if ( i.ge.icb(il) .and. i.le.inb(il) .and. lwork(il) 1769 : .and. csum(il,i).lt.m(il,i) ) then 1770 traent(il,i,i,j)=tra(il,nk(il),j) 1771 endif 1772 enddo 1773 enddo 1774 1765 c do j=1,ntra 1766 c do il=1,ncum 1767 c if ( i.ge.icb(il) .and. i.le.inb(il) .and. lwork(il) 1768 c : .and. csum(il,i).lt.m(il,i) ) then 1769 c traent(il,i,i,j)=tra(il,nk(il),j) 1770 c endif 1771 c enddo 1772 c enddo 1775 1773 789 continue 1776 1774 c … … 1869 1867 enddo 1870 1868 1871 do k=1,ntra1872 do i=1,nd1873 do il=1,ncum1874 trap(il,i,k)=tra(il,i,k)1875 enddo1876 enddo1877 enddo1869 c do k=1,ntra 1870 c do i=1,nd 1871 c do il=1,ncum 1872 c trap(il,i,k)=tra(il,i,k) 1873 c enddo 1874 c enddo 1875 c enddo 1878 1876 1879 1877 c … … 2103 2101 vp(il,i)=vp(il,i)/mp(il,i) 2104 2102 2105 do j=1,ntra2106 trap(il,i,j)=trap(il,i+1,j)*mp(il,i+1)2103 c do j=1,ntra 2104 c trap(il,i,j)=trap(il,i+1,j)*mp(il,i+1) 2107 2105 ctestmaf : +trap(il,i,j)*(mp(il,i)-mp(il,i+1)) 2108 : +tra(il,i,j)*(mp(il,i)-mp(il,i+1))2109 trap(il,i,j)=trap(il,i,j)/mp(il,i)2110 end do2106 c : +tra(il,i,j)*(mp(il,i)-mp(il,i+1)) 2107 c trap(il,i,j)=trap(il,i,j)/mp(il,i) 2108 c end do 2111 2109 2112 2110 else … … 2125 2123 vp(il,i)=vp(il,i+1) 2126 2124 2127 do j=1,ntra2128 trap(il,i,j)=trap(il,i+1,j)2129 end do2125 c do j=1,ntra 2126 c trap(il,i,j)=trap(il,i+1,j) 2127 c end do 2130 2128 2131 2129 endif … … 2226 2224 enddo 2227 2225 2228 do j=1,ntra2229 do i=1,nd2230 do il=1,ncum2231 ftra(il,i,j)=0.02232 enddo2233 enddo2234 enddo2226 c do j=1,ntra 2227 c do i=1,nd 2228 c do il=1,ncum 2229 c ftra(il,i,j)=0.0 2230 c enddo 2231 c enddo 2232 c enddo 2235 2233 2236 2234 do i=1,nl … … 2330 2328 enddo ! il 2331 2329 2332 do j=1,ntra2333 do il=1,ncum2334 if (cvflag_grav) then2335 ftra(il,1,j)=ftra(il,1,j)+0.01*grav*work(il)2336 : *(mp(il,2)*(trap(il,2,j)-tra(il,1,j))2337 : +am(il)*(tra(il,2,j)-tra(il,1,j)))2338 else2339 ftra(il,1,j)=ftra(il,1,j)+0.1*work(il)2340 : *(mp(il,2)*(trap(il,2,j)-tra(il,1,j))2341 : +am(il)*(tra(il,2,j)-tra(il,1,j)))2342 endif2343 enddo2344 enddo2330 c do j=1,ntra 2331 c do il=1,ncum 2332 c if (cvflag_grav) then 2333 c ftra(il,1,j)=ftra(il,1,j)+0.01*grav*work(il) 2334 c : *(mp(il,2)*(trap(il,2,j)-tra(il,1,j)) 2335 c : +am(il)*(tra(il,2,j)-tra(il,1,j))) 2336 c else 2337 c ftra(il,1,j)=ftra(il,1,j)+0.1*work(il) 2338 c : *(mp(il,2)*(trap(il,2,j)-tra(il,1,j)) 2339 c : +am(il)*(tra(il,2,j)-tra(il,1,j))) 2340 c endif 2341 c enddo 2342 c enddo 2345 2343 2346 2344 do j=2,nl … … 2366 2364 enddo 2367 2365 2368 do k=1,ntra2369 do j=2,nl2370 do il=1,ncum2371 if (j.le.inb(il)) then2372 2373 if (cvflag_grav) then2374 ftra(il,1,k)=ftra(il,1,k)+0.01*grav*work(il)*ment(il,j,1)2375 : *(traent(il,j,1,k)-tra(il,1,k))2376 else2377 ftra(il,1,k)=ftra(il,1,k)+0.1*work(il)*ment(il,j,1)2378 : *(traent(il,j,1,k)-tra(il,1,k))2379 endif2380 2381 endif2382 enddo2383 enddo2384 enddo2366 c do k=1,ntra 2367 c do j=2,nl 2368 c do il=1,ncum 2369 c if (j.le.inb(il)) then 2370 2371 c if (cvflag_grav) then 2372 c ftra(il,1,k)=ftra(il,1,k)+0.01*grav*work(il)*ment(il,j,1) 2373 c : *(traent(il,j,1,k)-tra(il,1,k)) 2374 c else 2375 c ftra(il,1,k)=ftra(il,1,k)+0.1*work(il)*ment(il,j,1) 2376 c : *(traent(il,j,1,k)-tra(il,1,k)) 2377 c endif 2378 2379 c endif 2380 c enddo 2381 c enddo 2382 c enddo 2385 2383 2386 2384 c … … 2488 2486 1350 continue 2489 2487 2490 do k=1,ntra2491 do il=1,ncum2492 if (i.le.inb(il)) then2493 dpinv=1.0/(ph(il,i)-ph(il,i+1))2494 cpinv=1.0/cpn(il,i)2495 if (cvflag_grav) then2496 ftra(il,i,k)=ftra(il,i,k)+0.01*grav*dpinv2497 : *(amp1(il)*(tra(il,i+1,k)-tra(il,i,k))2498 : -ad(il)*(tra(il,i,k)-tra(il,i-1,k)))2499 else2500 ftra(il,i,k)=ftra(il,i,k)+0.1*dpinv2501 : *(amp1(il)*(tra(il,i+1,k)-tra(il,i,k))2502 : -ad(il)*(tra(il,i,k)-tra(il,i-1,k)))2503 endif2504 endif2505 enddo2506 enddo2488 c do k=1,ntra 2489 c do il=1,ncum 2490 c if (i.le.inb(il)) then 2491 c dpinv=1.0/(ph(il,i)-ph(il,i+1)) 2492 c cpinv=1.0/cpn(il,i) 2493 c if (cvflag_grav) then 2494 c ftra(il,i,k)=ftra(il,i,k)+0.01*grav*dpinv 2495 c : *(amp1(il)*(tra(il,i+1,k)-tra(il,i,k)) 2496 c : -ad(il)*(tra(il,i,k)-tra(il,i-1,k))) 2497 c else 2498 c ftra(il,i,k)=ftra(il,i,k)+0.1*dpinv 2499 c : *(amp1(il)*(tra(il,i+1,k)-tra(il,i,k)) 2500 c : -ad(il)*(tra(il,i,k)-tra(il,i-1,k))) 2501 c endif 2502 c endif 2503 c enddo 2504 c enddo 2507 2505 2508 2506 do 480 k=1,i-1 … … 2538 2536 480 continue 2539 2537 2540 do j=1,ntra2541 do k=1,i-12542 do il=1,ncum2543 if (i.le.inb(il)) then2544 dpinv=1.0/(ph(il,i)-ph(il,i+1))2545 cpinv=1.0/cpn(il,i)2546 if (cvflag_grav) then2547 ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv*ment(il,k,i)2548 : *(traent(il,k,i,j)-tra(il,i,j))2549 else2550 ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv*ment(il,k,i)2551 : *(traent(il,k,i,j)-tra(il,i,j))2552 endif2553 endif2554 enddo2555 enddo2556 enddo2538 c do j=1,ntra 2539 c do k=1,i-1 2540 c do il=1,ncum 2541 c if (i.le.inb(il)) then 2542 c dpinv=1.0/(ph(il,i)-ph(il,i+1)) 2543 c cpinv=1.0/cpn(il,i) 2544 c if (cvflag_grav) then 2545 c ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv*ment(il,k,i) 2546 c : *(traent(il,k,i,j)-tra(il,i,j)) 2547 c else 2548 c ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv*ment(il,k,i) 2549 c : *(traent(il,k,i,j)-tra(il,i,j)) 2550 c endif 2551 c endif 2552 c enddo 2553 c enddo 2554 c enddo 2557 2555 2558 2556 do 490 k=i,nl+1 … … 2581 2579 490 continue 2582 2580 2583 do j=1,ntra2584 do k=i,nl+12585 do il=1,ncum2586 if (i.le.inb(il) .and. k.le.inb(il)) then2587 dpinv=1.0/(ph(il,i)-ph(il,i+1))2588 cpinv=1.0/cpn(il,i)2589 if (cvflag_grav) then2590 ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv*ment(il,k,i)2591 : *(traent(il,k,i,j)-tra(il,i,j))2592 else2593 ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv*ment(il,k,i)2594 : *(traent(il,k,i,j)-tra(il,i,j))2595 endif2596 endif ! i and k2597 enddo2598 enddo2599 enddo2581 c do j=1,ntra 2582 c do k=i,nl+1 2583 c do il=1,ncum 2584 c if (i.le.inb(il) .and. k.le.inb(il)) then 2585 c dpinv=1.0/(ph(il,i)-ph(il,i+1)) 2586 c cpinv=1.0/cpn(il,i) 2587 c if (cvflag_grav) then 2588 c ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv*ment(il,k,i) 2589 c : *(traent(il,k,i,j)-tra(il,i,j)) 2590 c else 2591 c ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv*ment(il,k,i) 2592 c : *(traent(il,k,i,j)-tra(il,i,j)) 2593 c endif 2594 c endif ! i and k 2595 c enddo 2596 c enddo 2597 c enddo 2600 2598 2601 2599 do 1400 il=1,ncum … … 2654 2652 enddo 2655 2653 2656 do j=1,ntra 2657 do il=1,ncum 2658 if (i.le.inb(il)) then 2659 dpinv=1.0/(ph(il,i)-ph(il,i+1)) 2660 cpinv=1.0/cpn(il,i) 2661 2662 if (cvflag_grav) then 2663 ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv 2664 : *(mp(il,i+1)*(trap(il,i+1,j)-tra(il,i,j)) 2665 : -mp(il,i)*(trap(il,i,j)-tra(il,i-1,j))) 2666 else 2667 ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv 2668 : *(mp(il,i+1)*(trap(il,i+1,j)-tra(il,i,j)) 2669 : -mp(il,i)*(trap(il,i,j)-tra(il,i-1,j))) 2670 endif 2671 endif ! i 2672 enddo 2673 enddo 2674 2654 c do j=1,ntra 2655 c do il=1,ncum 2656 c if (i.le.inb(il)) then 2657 c dpinv=1.0/(ph(il,i)-ph(il,i+1)) 2658 c cpinv=1.0/cpn(il,i) 2659 2660 c if (cvflag_grav) then 2661 c ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv 2662 c : *(mp(il,i+1)*(trap(il,i+1,j)-tra(il,i,j)) 2663 c : -mp(il,i)*(trap(il,i,j)-tra(il,i-1,j))) 2664 c else 2665 c ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv 2666 c : *(mp(il,i+1)*(trap(il,i+1,j)-tra(il,i,j)) 2667 c : -mp(il,i)*(trap(il,i,j)-tra(il,i-1,j))) 2668 c endif 2669 c endif ! i 2670 c enddo 2671 c enddo 2675 2672 2676 2673 500 continue … … 2715 2712 503 continue 2716 2713 2717 do j=1,ntra2718 do il=1,ncum2719 ex=0.1*ment(il,inb(il),inb(il))2720 : *(traent(il,inb(il),inb(il),j)-tra(il,inb(il),j))2721 : /(ph(il,inb(il))-ph(il,inb(il)+1))2722 ftra(il,inb(il),j)=ftra(il,inb(il),j)-ex2723 ftra(il,inb(il)-1,j)=ftra(il,inb(il)-1,j)2724 : +ex*(ph(il,inb(il))-ph(il,inb(il)+1))2725 : /(ph(il,inb(il)-1)-ph(il,inb(il)))2726 enddo2727 enddo2714 c do j=1,ntra 2715 c do il=1,ncum 2716 c ex=0.1*ment(il,inb(il),inb(il)) 2717 c : *(traent(il,inb(il),inb(il),j)-tra(il,inb(il),j)) 2718 c : /(ph(il,inb(il))-ph(il,inb(il)+1)) 2719 c ftra(il,inb(il),j)=ftra(il,inb(il),j)-ex 2720 c ftra(il,inb(il)-1,j)=ftra(il,inb(il)-1,j) 2721 c : +ex*(ph(il,inb(il))-ph(il,inb(il)+1)) 2722 c : /(ph(il,inb(il)-1)-ph(il,inb(il))) 2723 c enddo 2724 c enddo 2728 2725 2729 2726 c … … 2981 2978 end 2982 2979 2980 SUBROUTINE cv3_tracer(nloc,len,ncum,nd,na, 2981 & ment,sij,da,phi) 2982 implicit none 2983 c inputs: 2984 integer ncum, nd, na, nloc,len 2985 real ment(nloc,na,na),sij(nloc,na,na) 2986 c ouputs: 2987 real da(nloc,na),phi(nloc,na,na) 2988 c local variables: 2989 integer i,j,k 2990 c 2991 da(:,:)=0. 2992 c 2993 do j=1,na 2994 do k=1,na 2995 do i=1,ncum 2996 da(i,j)=da(i,j)+(1.-sij(i,k,j))*ment(i,k,j) 2997 phi(i,j,k)=sij(i,k,j)*ment(i,k,j) 2998 c print *,'da',j,k,da(i,j),sij(i,k,j),ment(i,k,j) 2999 end do 3000 end do 3001 end do 3002 3003 return 3004 end 3005 2983 3006 2984 3007 SUBROUTINE cv3_uncompress(nloc,len,ncum,nd,ntra,idcum … … 3051 3074 3052 3075 3053 do 2100 j=1,ntra3054 do 2110 k=1,nd ! oct33055 do 2120 i=1,ncum3056 ftra1(idcum(i),k,j)=ftra(i,k,j)3057 2120 continue3058 2110 continue3059 2100 continue3076 c do 2100 j=1,ntra 3077 c do 2110 k=1,nd ! oct3 3078 c do 2120 i=1,ncum 3079 c ftra1(idcum(i),k,j)=ftra(i,k,j) 3080 c 2120 continue 3081 c 2110 continue 3082 c 2100 continue 3060 3083 3061 3084 return
Note: See TracChangeset
for help on using the changeset viewer.