source: trunk/LMDZ.MARS/libf/dynphy_lonlat/phymars/mvc_horiz_mod.F @ 2943

Last change on this file since 2943 was 1974, checked in by mvals, 6 years ago

Mars GCM:
Integration of the detached dust layer parametrizations (rocket dust storm, slope wind lifting, CW, and dust injection scheme, DB).
Still experimental, default behaviour (rdstorm=.false., dustinjection=0) identical to previous revision.
NB: Updated newstart requires an updated "surface.nc" containing the "hmons" field.
EM+MV

File size: 2.3 KB
Line 
1      MODULE mvc_horiz_mod
2     
3      implicit none
4     
5      contains     
6
7      subroutine mvc_horiz(imo,jmo,imn,jmn,rlonuo,rlatvo,rlonv,
8     .             rlatu,zdata,outdata)
9
10c=======================================================================
11c Maximum/minimum value composite approach for interpolate the variables
12c  from surface.nc (summit, base... )
13c  Chao Wang
14c=======================================================================
15
16      implicit none
17     
18      !inputs/ouputs
19      integer, intent(in) :: imo,jmo
20      integer, intent(in) :: imn,jmn
21      real, intent(in)    ::  rlonv(imn+1)   
22      real, intent(in)    ::  rlatu(jmn+1)   
23      real, intent(in)    ::  zdata(imo*jmo)
24      real, intent(out)   ::   outdata(imn+1,jmn+1)
25     
26      !local variables:
27      real pi
28      integer i,j,l,m,n
29      real tmplon(imn+2)
30      real tmplat(jmn+2)
31      REAL rlonuo(imo)   
32      REAL rlatvo(jmo)   
33
34      integer iik(imo,jmo),jjk(imo,jmo)
35      integer tmp
36
37c     initialize
38      iik(:,:)=0
39      jjk(:,:)=0
40      outdata(:,:)=-999999. !lowest point on Mars ~8200m
41
42      pi=2.*ASIN(1.)
43
44      tmplon(1)=rlonv(1)
45      do i=2,imn+1
46        tmplon(i)= (rlonv(i-1)+rlonv(i))/2.
47      enddo
48      tmplon(imn+2)=rlonv(imn+1)
49
50      tmplat(1)=rlatu(1)
51      do j=2,jmn+1
52        tmplat(j)=(rlatu(j-1)+rlatu(j))/2.
53      enddo
54      tmplat(jmn+2)=rlatu(jmn+1)
55
56
57      do i=1,imo
58        do j=1,jmo
59          do m=1,imn+1
60            do n=1,jmn+1
61             
62              if ( ((rlonuo(i) .ge. tmplon(m)) .and.
63     &                       (rlonuo(i) .lt. tmplon(m+1))) .and.
64     &           ((rlatvo(j) .lt. tmplat(n) ) .and.
65     &            (rlatvo(j) .ge. tmplat(n+1) ))) then
66                iik(i,j)=m
67                jjk(i,j)=n
68                goto 1000
69              endif
70             
71            enddo
72          enddo
731000      continue
74        enddo
75      enddo
76
77      do m=1,imn+1
78        do n=1,jmn+1
79          do i=1,imo
80            do j=1,jmo
81
82               if ((iik(i,j) .eq. m) .and. (jjk(i,j) .eq. n)) then
83                  outdata(m,n)=max(outdata(m,n),zdata(i+imo*(j-1))  )
84               endif       
85
86            enddo
87          enddo
88        enddo
89      enddo
90
91      end subroutine mvc_horiz
92     
93      END MODULE mvc_horiz_mod
Note: See TracBrowser for help on using the repository browser.