OB.DAAC Logo
NASA Logo
Ocean Color Science Software

ocssw V2022
mdiffn.f
Go to the documentation of this file.
1  subroutine mdiffn(ib,ie,il,dlyr)
2 c
3 c compute the integral: int(pidw)
4 c
5 c*************************************************************************
6 c.....includes the common blocks
7  implicit real*8 (a-h,o-z)
8  include 'common_all.cmn'
9 c
10  real*8 fiit(4,50,46)
11 c**************************************************************************
12 c
13  do it=ib,ie
14  do ip=1,jpart
15  if(ip.eq.1 .or. ip.eq.jpart)then
16  do is=1,4
17  sumta=0.0d0
18  do kk=1,nmum1
19  sumtb=0.0d0
20  do ll=1,jpart
21  if(ip.eq.1)then
22  llp=ll
23  ipc=ip+ll-1
24  else
25  llp=jpart-ll+1
26  ipc=ip+ll-1
27  endif
28  do ic=1,4
29  fiit(ic,kk,llp)=fiic(ic,kk,llp)
30  enddo
31  if(ipc.gt. jpart)then
32  fiit(3,kk,llp)=-fiic(3,kk,llp)
33  fiit(4,kk,llp)=-fiic(4,kk,llp)
34  endif
35 c
36  prod1=0.0d0
37  do j=1,4
38  ij=(is-1)*4+j
39  prod1=prod1+(c(kk)*tmsl*ppin(ij,ll,it,kk)+
40  1 trsl*ppin(ij+16,ll,it,kk))*fiit(j,kk,llp)/dlyr
41  enddo
42  if(ll.eq.1 .or. ll.eq.jpart)then
43  sumtb=sumtb+prod1
44  else if(is.le.2)then
45  sumtb=sumtb+2.0d0*prod1
46  endif
47  enddo
48  sumta=sumta+sumtb*dmu(kk)
49  enddo
50  ftmp(is,it,ip)=sumta*ddphi
51  enddo
52  else
53  do is=1,4
54  sumta=0.0d0
55  do kk=1,nmum1
56  sumtb=0.0d0
57  do ll=1,nophi
58  mnz=ll+ip-2
59  mmp=mnz+1-(nophi*(mnz/nophi))
60 c
61  if(ll.le.jpart .and. mmp.le.jpart)then
62  iflg1=0
63  iflg2=0
64  llp=ll
65  else if(ll.le.jpart .and. mmp.gt.jpart)then
66  iflg1=1
67  iflg2=0
68  llp=ll
69  mmp=nophi-mmp+2
70  else if(ll.gt.jpart .and. mmp.le.jpart)then
71  iflg1=1
72  iflg2=1
73  llp=nophi-ll+2
74  else if(ll.gt.jpart .and. mmp.gt.jpart)then
75  iflg1=0
76  iflg2=1
77  llp=nophi-ll+2
78  mmp=nophi-mmp+2
79  endif
80  do ic=1,4
81  fiit(ic,kk,llp)=fiic(ic,kk,llp)
82  enddo
83 c
84  if(iflg1.eq.1)then
85  fiit(3,kk,mmp)=-fiic(3,kk,mmp)
86  fiit(4,kk,mmp)=-fiic(4,kk,mmp)
87  endif
88  prod1=0.0d0
89  do j=1,4
90  ij=(is-1)*4+j
91  prod1=prod1+(c(kk)*tmsl*ppin(ij,llp,it,kk)+
92  1 trsl*ppin(ij+16,llp,it,kk))*fiit(j,kk,mmp)/dlyr
93  enddo
94  if(is.ge.3 .and. iflg2.eq.1)then
95  prod1=-prod1
96  endif
97  sumtb=sumtb+prod1
98  enddo
99  sumta=sumta+sumtb*dmu(kk)
100  enddo
101  ftmp(is,it,ip)=sumta*ddphi
102  enddo
103  endif
104  enddo
105  enddo
106  return
107  end
108 c**********************************************************************
#define real
Definition: DbAlgOcean.cpp:26
subroutine mdiffn(ib, ie, il, dlyr)
Definition: mdiffn.f:2