/[MITgcm]/MITgcm_contrib/dgoldberg/streamice/streamice_cg_functions.F
ViewVC logotype

Diff of /MITgcm_contrib/dgoldberg/streamice/streamice_cg_functions.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1 by heimbach, Thu Mar 29 15:59:21 2012 UTC revision 1.8 by dgoldberg, Wed Aug 27 19:29:13 2014 UTC
# Line 62  C Phi_k is equal to 1 at vertex k, and 0 Line 62  C Phi_k is equal to 1 at vertex k, and 0
62    
63  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
64  C     == Local variables ==  C     == Local variables ==
65        INTEGER iq, jq, inode, jnode, i, j, bi, bj, ilq, jlq, m, n        INTEGER iq, jq, inode, jnode, i, j, bi, bj, ilq, jlq, m, n,Gi,Gj
66        _RL ux, vx, uy, vy, uq, vq, exx, eyy, exy, phival        _RL ux, vx, uy, vy, uq, vq, exx, eyy, exy
67        _RL Ucell (2,2)        _RL Ucell (2,2)
68        _RL Vcell (2,2)        _RL Vcell (2,2)
69        _RL Hcell (2,2)        _RL Hcell (2,2)
70          _RL phival(2,2)
71    
72          uret(1,1,1,1) = uret(1,1,1,1)
73          vret(1,1,1,1) = vret(1,1,1,1)
74    
75        DO j = js, je        DO j = js, je
76         DO i = is, ie         DO i = is, ie
77          DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
78           DO bi = myBxLo(myThid), myBxHi(myThid)           DO bi = myBxLo(myThid), myBxHi(myThid)
79    
80             Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
81             Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
82    
83            IF (STREAMICE_hmask (i,j,bi,bj) .eq. 1.0) THEN            IF (STREAMICE_hmask (i,j,bi,bj) .eq. 1.0) THEN
84             DO iq=1,2             DO iq = 1,2
85              DO jq = 1,2              DO jq = 1,2
86    
87              n = 2*(jq-1)+iq              n = 2*(jq-1)+iq
88    
89    
90              uq = u(i,j,bi,bj) * Xquad(3-iq) * Xquad(3-jq) +              uq = u(i,j,bi,bj) * Xquad(3-iq) * Xquad(3-jq) +
91       &       u(i+1,j,bi,bj) * Xquad(iq) * Xquad(3-jq) +       &       u(i+1,j,bi,bj) * Xquad(iq) * Xquad(3-jq) +
92       &       u(i,j+1,bi,bj) * Xquad(3-iq) * Xquad(jq) +       &       u(i,j+1,bi,bj) * Xquad(3-iq) * Xquad(jq) +
# Line 112  C     == Local variables == Line 121  C     == Local variables ==
121    
122               m = 2*(jnode-1)+inode               m = 2*(jnode-1)+inode
123               ilq = 1               ilq = 1
124                jlq = 1               jlq = 1
125               if (inode.eq.iq) ilq = 2               if (inode.eq.iq) ilq = 2
126               if (jnode.eq.jq) jlq = 2                 if (jnode.eq.jq) jlq = 2
127               phival = Xquad(ilq)*Xquad(jlq)               phival(inode,jnode) = Xquad(ilq)*Xquad(jlq)
128    
129               if (STREAMICE_umask(i-1+inode,j-1+jnode,bi,bj).eq.1.0) then                           if (STREAMICE_umask(i-1+inode,j-1+jnode,bi,bj).eq.1.0) then            
130                  
131                uret(i-1+inode,j-1+jnode,bi,bj) =                uret(i-1+inode,j-1+jnode,bi,bj) =
132       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *
133       &         grid_jacq_streamice(i,j,bi,bj,n) *       &         grid_jacq_streamice(i,j,bi,bj,n) *
134       &         visc_streamice(i,j,bi,bj) * (       &         visc_streamice(i,j,bi,bj) * (
135       &          DPhi(i,j,bi,bj,m,n,1)*(4*exx+2*eyy) +       &          DPhi(i,j,bi,bj,m,n,1)*(4*exx+2*eyy) +
136       &          DPhi(i,j,bi,bj,m,n,2)*(2*exy))       &          DPhi(i,j,bi,bj,m,n,2)*(2*exy))
137    
138    
139                  uret(i-1+inode,j-1+jnode,bi,bj) =
140         &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *
141         &         grid_jacq_streamice(i,j,bi,bj,n) *
142         &         visc_streamice(i,j,bi,bj) * phival(inode,jnode) *
143         &         (4*k2AtC_str(i,j,bi,bj)*eyy+2*k2AtC_str(i,j,bi,bj)*exx+
144         &          4*0.5*k1AtC_str(i,j,bi,bj)*exy)
145    
146    
147                  uret(i-1+inode,j-1+jnode,bi,bj) =
148         &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *
149         &         phival(inode,jnode) *
150         &         grid_jacq_streamice(i,j,bi,bj,n) *
151         &         tau_beta_eff_streamice (i,j,bi,bj) * uq
152    
153    
154                 endif
155        
156                 if (STREAMICE_vmask(i-1+inode,j-1+jnode,bi,bj).eq.1.0) then
157                vret(i-1+inode,j-1+jnode,bi,bj) =                vret(i-1+inode,j-1+jnode,bi,bj) =
158       &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *
159       &         grid_jacq_streamice(i,j,bi,bj,n) *       &         grid_jacq_streamice(i,j,bi,bj,n) *
160       &         visc_streamice(i,j,bi,bj) * (       &         visc_streamice(i,j,bi,bj) * (
161       &          DPhi(i,j,bi,bj,m,n,2)*(4*eyy+2*exx) +       &          DPhi(i,j,bi,bj,m,n,2)*(4*eyy+2*exx) +
162       &          DPhi(i,j,bi,bj,m,n,1)*(2*exy))       &          DPhi(i,j,bi,bj,m,n,1)*(2*exy))
   
               uret(i-1+inode,j-1+jnode,bi,bj) =  
      &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *  
      &         grid_jacq_streamice(i,j,bi,bj,n) *  
      &         visc_streamice(i,j,bi,bj) * phival *  
      &         (4*k2AtC_str(i,j,bi,bj)*eyy+2*k2AtC_str(i,j,bi,bj)*exx+  
      &          4*0.5*k1AtC_str(i,j,bi,bj)*exy)      
163                vret(i-1+inode,j-1+jnode,bi,bj) =                vret(i-1+inode,j-1+jnode,bi,bj) =
164       &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *
165       &         grid_jacq_streamice(i,j,bi,bj,n) *       &         grid_jacq_streamice(i,j,bi,bj,n) *
166       &         visc_streamice(i,j,bi,bj) * phival *       &         visc_streamice(i,j,bi,bj) * phival(inode,jnode) *
167       &         (4*k1AtC_str(i,j,bi,bj)*exx+2*k1AtC_str(i,j,bi,bj)*eyy+       &         (4*k1AtC_str(i,j,bi,bj)*exx+2*k1AtC_str(i,j,bi,bj)*eyy+
168       &          4*0.5*k2AtC_str(i,j,bi,bj)*exy)       &          4*0.5*k2AtC_str(i,j,bi,bj)*exy)
   
 !               IF (bi.eq.2.and.bj.eq.2.and.i.eq.15.and.  
 !      &         (exx.ne.0.0 .or. eyy.ne.0.0 .or. exy.ne.0.0)) THEN  
 !                PRINT *, "CG_FUNCTION", j, v(i,j,bi,bj),v(i+1,j,bi,bj),  
 !      &           v(i,j+1,bi,bj),v(i+1,j+1,bi,bj)  
 !               ENDIF  
   
                 
               uret(i-1+inode,j-1+jnode,bi,bj) =  
      &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *  
      &         phival * grid_jacq_streamice(i,j,bi,bj,n) *  
      &         tau_beta_eff_streamice (i,j,bi,bj) * uq  
169                vret(i-1+inode,j-1+jnode,bi,bj) =                vret(i-1+inode,j-1+jnode,bi,bj) =
170       &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *
171       &         phival * grid_jacq_streamice(i,j,bi,bj,n) *       &         phival(inode,jnode) *
172         &         grid_jacq_streamice(i,j,bi,bj,n) *
173       &         tau_beta_eff_streamice (i,j,bi,bj) * vq       &         tau_beta_eff_streamice (i,j,bi,bj) * vq
174                                
175               endif               endif
176              enddo              enddo
177              enddo              enddo
178    
179             enddo                         enddo            
180             enddo             enddo
181    c-- STREAMICE_hmask
182            endif            endif
183    
184           enddo           enddo
185          enddo          enddo
186         enddo         enddo
# Line 200  C     is, ie, js, je - starting and endi Line 214  C     is, ie, js, je - starting and endi
214    
215  #ifdef ALLOW_STREAMICE  #ifdef ALLOW_STREAMICE
216    
217    #ifdef STREAMICE_CONSTRUCT_MATRIX
218    
219  C the linear action of the matrix on (u,v) with triangular finite elements  C the linear action of the matrix on (u,v) with triangular finite elements
220  C as of now everything is passed in so no grid pointers or anything of the sort have to be dereferenced,  C as of now everything is passed in so no grid pointers or anything of the sort have to be dereferenced,
221  C but this may change pursuant to conversations with others  C but this may change pursuant to conversations with others
# Line 224  C     !LOCAL VARIABLES: Line 240  C     !LOCAL VARIABLES:
240  C     == Local variables ==  C     == Local variables ==
241        INTEGER iq, jq, inodx, inody, i, j, bi, bj, ilqx, ilqy, m_i, n        INTEGER iq, jq, inodx, inody, i, j, bi, bj, ilqx, ilqy, m_i, n
242        INTEGER jlqx, jlqy, jnodx,jnody, m_j, col_y, col_x, cg_halo, k        INTEGER jlqx, jlqy, jnodx,jnody, m_j, col_y, col_x, cg_halo, k
243        _RL ux, vx, uy, vy, uq, vq, exx, eyy, exy, phival        INTEGER colx_rev, coly_rev
244          _RL ux, vx, uy, vy, uq, vq, exx, eyy, exy, tmpval
245          _RL phival(2,2)
246    
247  !       do i=1,3  !       do i=1,3
248  !        do j=0,2  !        do j=0,2
# Line 266  cc          ENDDO Line 284  cc          ENDDO
284               DO inodx = 1,2               DO inodx = 1,2
285                DO inody = 1,2                DO inody = 1,2
286    
287    !               if (i.eq.50 .and. j.eq.50) then
288    !               PRINT *, "GOT HERE MAKEA", inodx,inody,
289    !     &          streamice_umask(i-1+inodx,j-1+inody,bi,bj)
290    !               endif
291    
292                 if (STREAMICE_umask(i-1+inodx,j-1+inody,bi,bj)                 if (STREAMICE_umask(i-1+inodx,j-1+inody,bi,bj)
293       &          .eq.1.0)       &          .eq.1.0 .or.
294         &             streamice_vmask(i-1+inodx,j-1+inody,bi,bj).eq.1.0)
295       &          then                   &          then            
296                            
297                  m_i = 2*(inody-1)+inodx                  m_i = 2*(inody-1)+inodx
# Line 276  cc          ENDDO Line 300  cc          ENDDO
300                            
301                  if (inodx.eq.iq) ilqx = 2                  if (inodx.eq.iq) ilqx = 2
302                  if (inody.eq.jq) ilqy = 2                    if (inody.eq.jq) ilqy = 2  
303                  phival = Xquad(ilqx)*Xquad(ilqy)                  phival(inodx,inody) = Xquad(ilqx)*Xquad(ilqy)
304    
305                  DO jnodx = 1,2                  DO jnodx = 1,2
306                   DO jnody = 1,2                   DO jnody = 1,2
307                    if (STREAMICE_umask(i-1+jnodx,j-1+jnody,bi,bj)                    if (STREAMICE_umask(i-1+jnodx,j-1+jnody,bi,bj)
308       &             .eq.1.0)       &             .eq.1.0 .or.
309         &             STREAMICE_vmask(i-1+jnodx,j-1+jnody,bi,bj).eq.1.0)
310       &             then                   &             then            
311    
312                     m_j = 2*(jnody-1)+jnodx                     m_j = 2*(jnody-1)+jnodx
# Line 295  cc          ENDDO Line 320  cc          ENDDO
320  !      &              jnody+mod(inody,2) )  !      &              jnody+mod(inody,2) )
321    
322                     col_x = mod(inodx,2)+jnodx-2                     col_x = mod(inodx,2)+jnodx-2
323                       colx_rev = mod(jnodx,2)+inodx-2
324                     col_y = mod(inody,2)+jnody-2                     col_y = mod(inody,2)+jnody-2
325                       coly_rev = mod(jnody,2)+inody-2
326  c  c
327    
328    
329                       IF ( (inodx.eq.jnodx .and. inody.eq.jnody) .or.
330         &                  (inodx.eq.1 .and. inody.eq.1) .or.
331         &                  (jnody.eq.2 .and. inody.eq.1) .or.
332         &                  (jnody.eq.2 .and. jnodx.eq.2)) THEN
333    
334    
335    
336                     ux = DPhi (i,j,bi,bj,m_j,n,1)                     ux = DPhi (i,j,bi,bj,m_j,n,1)
337                     uy = DPhi (i,j,bi,bj,m_j,n,2)                     uy = DPhi (i,j,bi,bj,m_j,n,2)
338                     vx = 0                       vx = 0  
# Line 311  c Line 345  c
345                     exy = .5*(uy+vx) +                     exy = .5*(uy+vx) +
346       &              k1AtC_str(i,j,bi,bj)*uq + k2AtC_str(i,j,bi,bj)*vq       &              k1AtC_str(i,j,bi,bj)*uq + k2AtC_str(i,j,bi,bj)*vq
347                                                    
348                     streamice_cg_A1                      tmpval = .25 *
      &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=                
      &             streamice_cg_A1  
      &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+  
      &              .25 *  
349       &              grid_jacq_streamice(i,j,bi,bj,n) *       &              grid_jacq_streamice(i,j,bi,bj,n) *
350       &              visc_streamice(i,j,bi,bj) * (       &              visc_streamice(i,j,bi,bj) * (
351       &              DPhi(i,j,bi,bj,m_i,n,1)*(4*exx+2*eyy) +       &              DPhi(i,j,bi,bj,m_i,n,1)*(4*exx+2*eyy) +
352       &              DPhi(i,j,bi,bj,m_i,n,2)*(2*exy))       &              DPhi(i,j,bi,bj,m_i,n,2)*(2*exy))
353    
354                     streamice_cg_A3                     streamice_cg_A1
355       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=                     &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=              
356       &             streamice_cg_A3       &             streamice_cg_A1
357       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+tmpval
358       &              .25 *  
359                       IF (.not. (inodx.eq.jnodx .and. inody.eq.jnody)) THEN
360                        streamice_cg_A1
361         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)=              
362         &              streamice_cg_A1
363         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)+
364         &               tmpval
365                       ENDIF
366    
367    !!!
368    
369                        tmpval = .25 *
370       &              grid_jacq_streamice(i,j,bi,bj,n) *       &              grid_jacq_streamice(i,j,bi,bj,n) *
371       &              visc_streamice(i,j,bi,bj) * (       &              visc_streamice(i,j,bi,bj) * (
372       &              DPhi(i,j,bi,bj,m_i,n,2)*(4*eyy+2*exx) +       &              DPhi(i,j,bi,bj,m_i,n,2)*(4*eyy+2*exx) +
373       &              DPhi(i,j,bi,bj,m_i,n,1)*(2*exy))       &              DPhi(i,j,bi,bj,m_i,n,1)*(2*exy))
374    
375                     streamice_cg_A1                     streamice_cg_A3
376       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=                     &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=              
377       &             streamice_cg_A1       &             streamice_cg_A3
378       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+tmpval
379       &              .25 *      
380                       IF (.not. (inodx.eq.jnodx .and. inody.eq.jnody)) THEN
381                        streamice_cg_A2
382         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)=              
383         &              streamice_cg_A2
384         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)+
385         &               tmpval
386                       ENDIF
387    
388    !!!
389    
390                        tmpval = .25 *
391       &              grid_jacq_streamice(i,j,bi,bj,n) *       &              grid_jacq_streamice(i,j,bi,bj,n) *
392       &              visc_streamice(i,j,bi,bj) * phival *       &              visc_streamice(i,j,bi,bj) * phival(inodx,inody) *
393       &             (4*k2AtC_str(i,j,bi,bj)*eyy+2*k2AtC_str(i,j,bi,bj)*       &             (4*k2AtC_str(i,j,bi,bj)*eyy+2*k2AtC_str(i,j,bi,bj)*
394       &              exx+4*0.5*k1AtC_str(i,j,bi,bj)*exy)           &              exx+4*0.5*k1AtC_str(i,j,bi,bj)*exy)    
395    
396                     streamice_cg_A3                     streamice_cg_A1
397       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=                     &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=              
398       &             streamice_cg_A3       &             streamice_cg_A1
399       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+tmpval
400       &              .25 *      
401                       IF (.not. (inodx.eq.jnodx .and. inody.eq.jnody)) THEN
402                        streamice_cg_A1
403         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)=              
404         &              streamice_cg_A1
405         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)+
406         &               tmpval
407                       ENDIF
408    
409    !!!
410    
411                       tmpval = .25 *
412       &              grid_jacq_streamice(i,j,bi,bj,n) *       &              grid_jacq_streamice(i,j,bi,bj,n) *
413       &              visc_streamice(i,j,bi,bj) * phival *       &              visc_streamice(i,j,bi,bj) * phival(inodx,inody) *
414       &             (4*k1AtC_str(i,j,bi,bj)*exx+2*k1AtC_str(i,j,bi,bj)*       &             (4*k1AtC_str(i,j,bi,bj)*exx+2*k1AtC_str(i,j,bi,bj)*
415       &              eyy+4*0.5*k2AtC_str(i,j,bi,bj)*exy)       &              eyy+4*0.5*k2AtC_str(i,j,bi,bj)*exy)
416    
417                       streamice_cg_A3
418         &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=              
419         &             streamice_cg_A3
420         &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+tmpval
421    
422                       IF (.not. (inodx.eq.jnodx .and. inody.eq.jnody)) THEN
423                        streamice_cg_A2
424         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)=              
425         &              streamice_cg_A2
426         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)+
427         &               tmpval
428                       ENDIF
429    
430    
431    !!!
432    
433                        tmpval = .25*phival(inodx,inody) *
434         &              grid_jacq_streamice(i,j,bi,bj,n) *
435         &              tau_beta_eff_streamice (i,j,bi,bj) * uq
436    
437                     streamice_cg_A1                     streamice_cg_A1
438       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=                     &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=              
439       &             streamice_cg_A1       &             streamice_cg_A1
440       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+tmpval
441       &              .25*phival * grid_jacq_streamice(i,j,bi,bj,n) *                    
442       &              tau_beta_eff_streamice (i,j,bi,bj) * uq                     IF (.not. (inodx.eq.jnodx .and. inody.eq.jnody)) THEN
443                        streamice_cg_A1
444         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)=              
445         &              streamice_cg_A1
446         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)+
447         &               tmpval
448                       ENDIF
449    
450    
451    !!!
452                        tmpval = .25*phival(inodx,inody) *
453         &              grid_jacq_streamice(i,j,bi,bj,n) *
454         &              tau_beta_eff_streamice (i,j,bi,bj) * vq
455    
456                     streamice_cg_A3                     streamice_cg_A3
457       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=                     &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=              
458       &             streamice_cg_A3       &             streamice_cg_A3
459       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+tmpval
460       &              .25*phival * grid_jacq_streamice(i,j,bi,bj,n) *                    
461       &              tau_beta_eff_streamice (i,j,bi,bj) * vq                     IF (.not. (inodx.eq.jnodx .and. inody.eq.jnody)) THEN
462                        streamice_cg_A2
463         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)=              
464         &              streamice_cg_A2
465         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)+
466         &               tmpval
467                       ENDIF
468    
469    
470                                
471  c  !!!
472    
473                     vx = DPhi (i,j,bi,bj,m_j,n,1)                     vx = DPhi (i,j,bi,bj,m_j,n,1)
474                     vy = DPhi (i,j,bi,bj,m_j,n,2)                     vy = DPhi (i,j,bi,bj,m_j,n,2)
# Line 379  c Line 482  c
482                     exy = .5*(uy+vx) +                     exy = .5*(uy+vx) +
483       &              k1AtC_str(i,j,bi,bj)*uq + k2AtC_str(i,j,bi,bj)*vq       &              k1AtC_str(i,j,bi,bj)*uq + k2AtC_str(i,j,bi,bj)*vq
484    
485                     streamice_cg_A2                      tmpval = .25 *
      &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=                
      &             streamice_cg_A2  
      &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+  
      &              .25 *  
486       &              grid_jacq_streamice(i,j,bi,bj,n) *       &              grid_jacq_streamice(i,j,bi,bj,n) *
487       &              visc_streamice(i,j,bi,bj) * (       &              visc_streamice(i,j,bi,bj) * (
488       &              DPhi(i,j,bi,bj,m_i,n,1)*(4*exx+2*eyy) +       &              DPhi(i,j,bi,bj,m_i,n,1)*(4*exx+2*eyy) +
489       &              DPhi(i,j,bi,bj,m_i,n,2)*(2*exy))       &              DPhi(i,j,bi,bj,m_i,n,2)*(2*exy))
490    
491                     streamice_cg_A4                     streamice_cg_A2
492       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=                     &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=              
493       &             streamice_cg_A4       &             streamice_cg_A2
494       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+tmpval
495       &              .25 *                    
496                       IF (.not. (inodx.eq.jnodx .and. inody.eq.jnody)) THEN
497                        streamice_cg_A3
498         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)=              
499         &              streamice_cg_A3
500         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)+
501         &               tmpval
502                       ENDIF
503    
504    
505                        tmpval = .25 *
506       &              grid_jacq_streamice(i,j,bi,bj,n) *       &              grid_jacq_streamice(i,j,bi,bj,n) *
507       &              visc_streamice(i,j,bi,bj) * (       &              visc_streamice(i,j,bi,bj) * (
508       &              DPhi(i,j,bi,bj,m_i,n,2)*(4*eyy+2*exx) +       &              DPhi(i,j,bi,bj,m_i,n,2)*(4*eyy+2*exx) +
509       &              DPhi(i,j,bi,bj,m_i,n,1)*(2*exy))       &              DPhi(i,j,bi,bj,m_i,n,1)*(2*exy))
510    
511                       streamice_cg_A4
512         &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=              
513         &             streamice_cg_A4
514         &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+tmpval
515                      
516                       IF (.not. (inodx.eq.jnodx .and. inody.eq.jnody)) THEN
517                        streamice_cg_A4
518         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)=              
519         &              streamice_cg_A4
520         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)+
521         &               tmpval
522                       ENDIF
523    
524    
525                       tmpval = .25 *
526         &              grid_jacq_streamice(i,j,bi,bj,n) *
527         &              visc_streamice(i,j,bi,bj) * phival(inodx,inody) *
528         &             (4*k2AtC_str(i,j,bi,bj)*eyy+2*k2AtC_str(i,j,bi,bj)*
529         &              exx+4*0.5*k1AtC_str(i,j,bi,bj)*exy)  
530    
531                     streamice_cg_A2                     streamice_cg_A2
532       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=                     &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=              
533       &             streamice_cg_A2       &             streamice_cg_A2
534       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+tmpval
535       &              .25 *                    
536                       IF (.not. (inodx.eq.jnodx .and. inody.eq.jnody)) THEN
537                        streamice_cg_A3
538         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)=              
539         &              streamice_cg_A3
540         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)+
541         &               tmpval
542                       ENDIF
543    
544    
545                       tmpval = .25 *
546       &              grid_jacq_streamice(i,j,bi,bj,n) *       &              grid_jacq_streamice(i,j,bi,bj,n) *
547       &              visc_streamice(i,j,bi,bj) * phival *       &              visc_streamice(i,j,bi,bj) * phival(inodx,inody) *
548       &             (4*k2AtC_str(i,j,bi,bj)*eyy+2*k2AtC_str(i,j,bi,bj)*       &             (4*k1AtC_str(i,j,bi,bj)*exx+2*k1AtC_str(i,j,bi,bj)*
549       &              exx+4*0.5*k1AtC_str(i,j,bi,bj)*exy)           &              eyy+4*0.5*k2AtC_str(i,j,bi,bj)*exy)
550    
551                     streamice_cg_A4                     streamice_cg_A4
552       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=                     &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=              
553       &             streamice_cg_A4       &             streamice_cg_A4
554       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+tmpval
555       &              .25 *                    
556                       IF (.not. (inodx.eq.jnodx .and. inody.eq.jnody)) THEN
557                        streamice_cg_A4
558         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)=              
559         &              streamice_cg_A4
560         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)+
561         &               tmpval
562                       ENDIF
563    
564    
565                        tmpval = .25*phival(inodx,inody) *
566       &              grid_jacq_streamice(i,j,bi,bj,n) *       &              grid_jacq_streamice(i,j,bi,bj,n) *
567       &              visc_streamice(i,j,bi,bj) * phival *       &              tau_beta_eff_streamice (i,j,bi,bj) * uq
      &             (4*k1AtC_str(i,j,bi,bj)*exx+2*k1AtC_str(i,j,bi,bj)*  
      &              eyy+4*0.5*k2AtC_str(i,j,bi,bj)*exy)  
568    
569                     streamice_cg_A2                     streamice_cg_A2
570       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=                     &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=              
571       &             streamice_cg_A2       &             streamice_cg_A2
572       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+tmpval
573       &              .25*phival * grid_jacq_streamice(i,j,bi,bj,n) *                    
574       &              tau_beta_eff_streamice (i,j,bi,bj) * uq                     IF (.not. (inodx.eq.jnodx .and. inody.eq.jnody)) THEN
575                        streamice_cg_A3
576         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)=              
577         &              streamice_cg_A3
578         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)+
579         &               tmpval
580                       ENDIF
581    
582    
583                        tmpval = .25*phival(inodx,inody) *
584         &              grid_jacq_streamice(i,j,bi,bj,n) *
585         &              tau_beta_eff_streamice (i,j,bi,bj) * vq
586    
587                     streamice_cg_A4                     streamice_cg_A4
588       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=                     &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)=              
589       &             streamice_cg_A4       &             streamice_cg_A4
590       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+       &                 (i-1+inodx,j-1+inody,bi,bj,col_x,col_y)+tmpval
591       &              .25*phival * grid_jacq_streamice(i,j,bi,bj,n) *                    
592       &              tau_beta_eff_streamice (i,j,bi,bj) * vq                     IF (.not. (inodx.eq.jnodx .and. inody.eq.jnody)) THEN
593                                          streamice_cg_A4
594         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)=              
595         &              streamice_cg_A4
596         &               (i-1+jnodx,j-1+jnody,bi,bj,colx_rev,coly_rev)+
597         &               tmpval
598                       ENDIF
599    
600    
601                       endif
602                    endif                    endif
603                   enddo                   enddo
604                  enddo                  enddo
# Line 447  c Line 613  c
613         enddo         enddo
614        enddo        enddo
615    
616    
617    
618    #endif
619  #endif  #endif
620        RETURN        RETURN
621        END SUBROUTINE        END SUBROUTINE
# Line 504  C Phi_k is equal to 1 at vertex k, and 0 Line 673  C Phi_k is equal to 1 at vertex k, and 0
673  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
674  C     == Local variables ==  C     == Local variables ==
675        INTEGER iq, jq, inode, jnode, i, j, bi, bj, ilq, jlq, m, n        INTEGER iq, jq, inode, jnode, i, j, bi, bj, ilq, jlq, m, n
676        _RL ux, vx, uy, vy, uq, vq, exx, eyy, exy, phival        _RL ux, vx, uy, vy, uq, vq, exx, eyy, exy
677        _RL Ucell (2,2)        _RL Ucell (2,2)
678        _RL Vcell (2,2)        _RL Vcell (2,2)
679        _RL Hcell (2,2)        _RL Hcell (2,2)
680          _RL phival(2,2)
681    
682          uret(1,1,1,1) = uret(1,1,1,1)
683          vret(1,1,1,1) = vret(1,1,1,1)
684    
685        DO j = 0, sNy+1        DO j = 0, sNy+1
686         DO i = 0, sNx+1         DO i = 0, sNx+1
# Line 523  C     == Local variables == Line 696  C     == Local variables ==
696               DO jnode = 1,2               DO jnode = 1,2
697                            
698               m = 2*(jnode-1)+inode               m = 2*(jnode-1)+inode
              ilq = 1  
              jlq = 1  
               
              if (inode.eq.iq) ilq = 2  
              if (jnode.eq.jq) jlq = 2    
              phival = Xquad(ilq)*Xquad(jlq)  
699    
700               ux = DPhi (i,j,bi,bj,m,n,1)               if (STREAMICE_umask(i-1+inode,j-1+jnode,bi,bj).eq.1.0 .or.
701               uy = DPhi (i,j,bi,bj,m,n,2)       &           STREAMICE_vmask(i-1+inode,j-1+jnode,bi,bj).eq.1.0)
702               vx = 0         &           then
703               vy = 0  
704               uq = Xquad(ilq) * Xquad(jlq)                ilq = 1
705               vq = 0                jlq = 1
   
              exx = ux + k1AtC_str(i,j,bi,bj)*vq  
              eyy = vy + k2AtC_str(i,j,bi,bj)*uq  
              exy = .5*(uy+vx) +  
      &        k1AtC_str(i,j,bi,bj)*uq + k2AtC_str(i,j,bi,bj)*vq  
706                            
707               if (STREAMICE_umask(i-1+inode,j-1+jnode,bi,bj).eq.1.0) then                            if (inode.eq.iq) ilq = 2
708                                if (jnode.eq.jq) jlq = 2  
709                  phival(inode,jnode) = Xquad(ilq)*Xquad(jlq)
710    
711                  ux = DPhi (i,j,bi,bj,m,n,1)
712                  uy = DPhi (i,j,bi,bj,m,n,2)
713                  vx = 0  
714                  vy = 0
715                  uq = Xquad(ilq) * Xquad(jlq)
716                  vq = 0
717    
718                  exx = ux + k1AtC_str(i,j,bi,bj)*vq
719                  eyy = vy + k2AtC_str(i,j,bi,bj)*uq
720                  exy = .5*(uy+vx) +
721         &         k1AtC_str(i,j,bi,bj)*uq + k2AtC_str(i,j,bi,bj)*vq
722    
723                uret(i-1+inode,j-1+jnode,bi,bj) =                uret(i-1+inode,j-1+jnode,bi,bj) =
724       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *
725       &         grid_jacq_streamice(i,j,bi,bj,n) *       &         grid_jacq_streamice(i,j,bi,bj,n) *
# Line 554  C     == Local variables == Line 730  C     == Local variables ==
730                uret(i-1+inode,j-1+jnode,bi,bj) =                uret(i-1+inode,j-1+jnode,bi,bj) =
731       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *
732       &         grid_jacq_streamice(i,j,bi,bj,n) *       &         grid_jacq_streamice(i,j,bi,bj,n) *
733       &         visc_streamice(i,j,bi,bj) * phival *       &         visc_streamice(i,j,bi,bj) * phival(inode,jnode) *
734       &         (4*k2AtC_str(i,j,bi,bj)*eyy+2*k2AtC_str(i,j,bi,bj)*exx+       &         (4*k2AtC_str(i,j,bi,bj)*eyy+2*k2AtC_str(i,j,bi,bj)*exx+
735       &          4*0.5*k1AtC_str(i,j,bi,bj)*exy)           &          4*0.5*k1AtC_str(i,j,bi,bj)*exy)    
736    
737                                
738                uret(i-1+inode,j-1+jnode,bi,bj) =                uret(i-1+inode,j-1+jnode,bi,bj) =
739       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *
740       &         phival * grid_jacq_streamice(i,j,bi,bj,n) *       &         phival(inode,jnode) * grid_jacq_streamice(i,j,bi,bj,n) *
741       &         tau_beta_eff_streamice (i,j,bi,bj) * uq       &         tau_beta_eff_streamice (i,j,bi,bj) * uq
742                                
743    
# Line 586  C     == Local variables == Line 762  C     == Local variables ==
762                vret(i-1+inode,j-1+jnode,bi,bj) =                vret(i-1+inode,j-1+jnode,bi,bj) =
763       &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *
764       &         grid_jacq_streamice(i,j,bi,bj,n) *       &         grid_jacq_streamice(i,j,bi,bj,n) *
765       &         visc_streamice(i,j,bi,bj) * phival *       &         visc_streamice(i,j,bi,bj) * phival(inode,jnode) *
766       &         (4*k1AtC_str(i,j,bi,bj)*exx+2*k1AtC_str(i,j,bi,bj)*eyy+       &         (4*k1AtC_str(i,j,bi,bj)*exx+2*k1AtC_str(i,j,bi,bj)*eyy+
767       &          4*0.5*k2AtC_str(i,j,bi,bj)*exy)       &          4*0.5*k2AtC_str(i,j,bi,bj)*exy)
768    
769                                
770                vret(i-1+inode,j-1+jnode,bi,bj) =                vret(i-1+inode,j-1+jnode,bi,bj) =
771       &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *
772       &         phival * grid_jacq_streamice(i,j,bi,bj,n) *       &         phival(inode,jnode) * grid_jacq_streamice(i,j,bi,bj,n) *
773       &         tau_beta_eff_streamice (i,j,bi,bj) * vq       &         tau_beta_eff_streamice (i,j,bi,bj) * vq
774                                
775               endif               endif
776    
777              enddo              enddo
778              enddo              enddo
779             enddo             enddo
# Line 664  C Phi_k is equal to 1 at vertex k, and 0 Line 841  C Phi_k is equal to 1 at vertex k, and 0
841  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
842  C     == Local variables ==  C     == Local variables ==
843        INTEGER iq, jq, inode, jnode, i, j, bi, bj, ilq, jlq, m, n        INTEGER iq, jq, inode, jnode, i, j, bi, bj, ilq, jlq, m, n
844        _RL ux, vx, uy, vy, uq, vq, exx, eyy, exy, phival        _RL ux, vx, uy, vy, uq, vq, exx, eyy, exy
845        _RL Ucell (2,2)        _RL Ucell (2,2)
846        _RL Vcell (2,2)        _RL Vcell (2,2)
847        _RL Hcell (2,2)        _RL Hcell (2,2)
848          _RL phival(2,2)
849    
850          uret(1,1,1,1) = uret(1,1,1,1)
851          vret(1,1,1,1) = vret(1,1,1,1)
852    
853        DO j = 0, sNy+1        DO j = 0, sNy+1
854         DO i = 0, sNx+1         DO i = 0, sNx+1
# Line 677  C     == Local variables == Line 858  C     == Local variables ==
858       &     ((STREAMICE_umask(i,j,bi,bj).eq.3.0) .OR.       &     ((STREAMICE_umask(i,j,bi,bj).eq.3.0) .OR.
859       &      (STREAMICE_umask(i,j+1,bi,bj).eq.3.0) .OR.       &      (STREAMICE_umask(i,j+1,bi,bj).eq.3.0) .OR.
860       &      (STREAMICE_umask(i+1,j,bi,bj).eq.3.0) .OR.       &      (STREAMICE_umask(i+1,j,bi,bj).eq.3.0) .OR.
861       &      (STREAMICE_umask(i+1,j+1,bi,bj).eq.3.0))) THEN       &      (STREAMICE_umask(i+1,j+1,bi,bj).eq.3.0) .OR.
862         &      (STREAMICE_vmask(i,j,bi,bj).eq.3.0) .OR.
863         &      (STREAMICE_vmask(i,j+1,bi,bj).eq.3.0) .OR.
864         &      (STREAMICE_vmask(i+1,j,bi,bj).eq.3.0) .OR.
865         &      (STREAMICE_vmask(i+1,j+1,bi,bj).eq.3.0))) THEN
866                        
867             DO iq=1,2             DO iq=1,2
868              DO jq = 1,2              DO jq = 1,2
# Line 696  C     == Local variables == Line 881  C     == Local variables ==
881       &       u_bdry_values_SI(i+1,j,bi,bj) * DPhi(i,j,bi,bj,2,n,1) +       &       u_bdry_values_SI(i+1,j,bi,bj) * DPhi(i,j,bi,bj,2,n,1) +
882       &       u_bdry_values_SI(i,j+1,bi,bj) * DPhi(i,j,bi,bj,3,n,1) +       &       u_bdry_values_SI(i,j+1,bi,bj) * DPhi(i,j,bi,bj,3,n,1) +
883       &       u_bdry_values_SI(i+1,j+1,bi,bj) * DPhi(i,j,bi,bj,4,n,1)       &       u_bdry_values_SI(i+1,j+1,bi,bj) * DPhi(i,j,bi,bj,4,n,1)
884              uy = u_bdry_values_SI(i,j,bi,bj) * DPhi(i,j,bi,bj,1,n,1) +              uy = u_bdry_values_SI(i,j,bi,bj) * DPhi(i,j,bi,bj,1,n,2) +
885       &       u_bdry_values_SI(i+1,j,bi,bj) * DPhi(i,j,bi,bj,2,n,2) +       &       u_bdry_values_SI(i+1,j,bi,bj) * DPhi(i,j,bi,bj,2,n,2) +
886       &       u_bdry_values_SI(i,j+1,bi,bj) * DPhi(i,j,bi,bj,3,n,2) +       &       u_bdry_values_SI(i,j+1,bi,bj) * DPhi(i,j,bi,bj,3,n,2) +
887       &       u_bdry_values_SI(i+1,j+1,bi,bj) * DPhi(i,j,bi,bj,4,n,2)       &       u_bdry_values_SI(i+1,j+1,bi,bj) * DPhi(i,j,bi,bj,4,n,2)
# Line 704  C     == Local variables == Line 889  C     == Local variables ==
889       &       v_bdry_values_SI(i+1,j,bi,bj) * DPhi(i,j,bi,bj,2,n,1) +       &       v_bdry_values_SI(i+1,j,bi,bj) * DPhi(i,j,bi,bj,2,n,1) +
890       &       v_bdry_values_SI(i,j+1,bi,bj) * DPhi(i,j,bi,bj,3,n,1) +       &       v_bdry_values_SI(i,j+1,bi,bj) * DPhi(i,j,bi,bj,3,n,1) +
891       &       v_bdry_values_SI(i+1,j+1,bi,bj) * DPhi(i,j,bi,bj,4,n,1)       &       v_bdry_values_SI(i+1,j+1,bi,bj) * DPhi(i,j,bi,bj,4,n,1)
892              vy = v_bdry_values_SI(i,j,bi,bj) * DPhi(i,j,bi,bj,1,n,1) +              vy = v_bdry_values_SI(i,j,bi,bj) * DPhi(i,j,bi,bj,1,n,2) +
893       &       v_bdry_values_SI(i+1,j,bi,bj) * DPhi(i,j,bi,bj,2,n,2) +       &       v_bdry_values_SI(i+1,j,bi,bj) * DPhi(i,j,bi,bj,2,n,2) +
894       &       v_bdry_values_SI(i,j+1,bi,bj) * DPhi(i,j,bi,bj,3,n,2) +       &       v_bdry_values_SI(i,j+1,bi,bj) * DPhi(i,j,bi,bj,3,n,2) +
895       &       v_bdry_values_SI(i+1,j+1,bi,bj) * DPhi(i,j,bi,bj,4,n,2)       &       v_bdry_values_SI(i+1,j+1,bi,bj) * DPhi(i,j,bi,bj,4,n,2)
# Line 713  C     == Local variables == Line 898  C     == Local variables ==
898              exy = .5*(uy+vx) +              exy = .5*(uy+vx) +
899       &       k1AtC_str(i,j,bi,bj)*uq + k2AtC_str(i,j,bi,bj)*vq       &       k1AtC_str(i,j,bi,bj)*uq + k2AtC_str(i,j,bi,bj)*vq
900    
901    
902              do inode = 1,2              do inode = 1,2
903               do jnode = 1,2               do jnode = 1,2
904    
905               m = 2*(jnode-1)+inode               m = 2*(jnode-1)+inode
906               ilq = 1               ilq = 1
907               ilq = 1               jlq = 1
908               if (inode.eq.iq) ilq = 2               if (inode.eq.iq) ilq = 2
909               if (jnode.eq.jq) jlq = 2                 if (jnode.eq.jq) jlq = 2  
910               phival = Xquad(ilq)*Xquad(jlq)               phival(inode,jnode) = Xquad(ilq)*Xquad(jlq)
911    
912                 if (STREAMICE_umask(i-1+inode,j-1+jnode,bi,bj).eq.1.0) then          
913    
              if (STREAMICE_umask(i-1+inode,j-1+jnode,bi,bj).eq.1.0) then              
914                                
915                uret(i-1+inode,j-1+jnode,bi,bj) =                uret(i-1+inode,j-1+jnode,bi,bj) =
916       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *
# Line 731  C     == Local variables == Line 918  C     == Local variables ==
918       &         visc_streamice(i,j,bi,bj) * (       &         visc_streamice(i,j,bi,bj) * (
919       &          DPhi(i,j,bi,bj,m,n,1)*(4*exx+2*eyy) +       &          DPhi(i,j,bi,bj,m,n,1)*(4*exx+2*eyy) +
920       &          DPhi(i,j,bi,bj,m,n,2)*(2*exy))       &          DPhi(i,j,bi,bj,m,n,2)*(2*exy))
921                vret(i-1+inode,j-1+jnode,bi,bj) =  
      &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *  
      &         grid_jacq_streamice(i,j,bi,bj,n) *  
      &         visc_streamice(i,j,bi,bj) * (  
      &          DPhi(i,j,bi,bj,m,n,2)*(4*eyy+2*exx) +  
      &          DPhi(i,j,bi,bj,m,n,1)*(2*exy))  
922    
923                uret(i-1+inode,j-1+jnode,bi,bj) =                uret(i-1+inode,j-1+jnode,bi,bj) =
924       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *
925       &         grid_jacq_streamice(i,j,bi,bj,n) *       &         grid_jacq_streamice(i,j,bi,bj,n) *
926       &         visc_streamice(i,j,bi,bj) * phival *       &         visc_streamice(i,j,bi,bj) * phival(inode,jnode) *
927       &         (4*k2AtC_str(i,j,bi,bj)*eyy+2*k2AtC_str(i,j,bi,bj)*exx+       &         (4*k2AtC_str(i,j,bi,bj)*eyy+2*k2AtC_str(i,j,bi,bj)*exx+
928       &          4*0.5*k1AtC_str(i,j,bi,bj)*exy)           &          4*0.5*k1AtC_str(i,j,bi,bj)*exy)    
929                vret(i-1+inode,j-1+jnode,bi,bj) =              
      &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *  
      &         grid_jacq_streamice(i,j,bi,bj,n) *  
      &         visc_streamice(i,j,bi,bj) * phival *  
      &         (4*k1AtC_str(i,j,bi,bj)*exx+2*k1AtC_str(i,j,bi,bj)*eyy+  
      &          4*0.5*k2AtC_str(i,j,bi,bj)*exy)  
930    
931  !               if (STREAMICE_float_cond(i,j,bi,bj) .eq. 1) then  !               if (STREAMICE_float_cond(i,j,bi,bj) .eq. 1) then
932                uret(i-1+inode,j-1+jnode,bi,bj) =                uret(i-1+inode,j-1+jnode,bi,bj) =
933       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         uret(i-1+inode,j-1+jnode,bi,bj) + .25 *
934       &         phival * grid_jacq_streamice(i,j,bi,bj,n) *       &         phival(inode,jnode) * grid_jacq_streamice(i,j,bi,bj,n) *
935       &         tau_beta_eff_streamice (i,j,bi,bj) * uq       &         tau_beta_eff_streamice (i,j,bi,bj) * uq
936    
937    
938    !               endif
939                 endif
940                 if (STREAMICE_vmask(i-1+inode,j-1+jnode,bi,bj).eq.1.0) then
941                vret(i-1+inode,j-1+jnode,bi,bj) =                vret(i-1+inode,j-1+jnode,bi,bj) =
942       &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *       &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *
943       &         phival * grid_jacq_streamice(i,j,bi,bj,n) *       &         grid_jacq_streamice(i,j,bi,bj,n) *
944         &         visc_streamice(i,j,bi,bj) * (
945         &          DPhi(i,j,bi,bj,m,n,2)*(4*eyy+2*exx) +
946         &          DPhi(i,j,bi,bj,m,n,1)*(2*exy))
947                  vret(i-1+inode,j-1+jnode,bi,bj) =
948         &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *
949         &         grid_jacq_streamice(i,j,bi,bj,n) *
950         &         visc_streamice(i,j,bi,bj) * phival(inode,jnode) *
951         &         (4*k1AtC_str(i,j,bi,bj)*exx+2*k1AtC_str(i,j,bi,bj)*eyy+
952         &          4*0.5*k2AtC_str(i,j,bi,bj)*exy)
953                  vret(i-1+inode,j-1+jnode,bi,bj) =
954         &         vret(i-1+inode,j-1+jnode,bi,bj) + .25 *
955         &         phival(inode,jnode) * grid_jacq_streamice(i,j,bi,bj,n) *
956       &         tau_beta_eff_streamice (i,j,bi,bj) * vq       &         tau_beta_eff_streamice (i,j,bi,bj) * vq
 !               endif  
957               endif               endif
958              enddo              enddo
959              enddo              enddo

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.22