/[MITgcm]/MITgcm/pkg/seaice/seaice_diffusion.F
ViewVC logotype

Annotation of /MITgcm/pkg/seaice/seaice_diffusion.F

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


Revision 1.1 - (hide annotations) (download)
Thu Feb 16 10:41:48 2006 UTC (18 years, 2 months ago) by mlosch
Branch: MAIN
CVS Tags: checkpoint58b_post
 add a few new advection schemes to seaice:
 ENUM_UPWIND_1RST, ENUM_DST2, ENUM_FLUX_LIMIT, ENUM_DST3,
 ENUM_DST3_FLUX_LIMIT
 Default is still the old one

1 mlosch 1.1 C $Header: $
2     C $Name: $
3    
4     #include "SEAICE_OPTIONS.h"
5    
6     CStartOfInterface
7     SUBROUTINE SEAICE_DIFFUSION(
8     U HEFF,
9     I HEFFM, DELTT, myTime, myIter, myThid )
10     C /==========================================================\
11     C | SUBROUTINE advect |
12     C | o Calculate ice advection |
13     C |==========================================================|
14     C \==========================================================/
15     IMPLICIT NONE
16    
17     C === Global variables ===
18     #include "SIZE.h"
19     #include "EEPARAMS.h"
20     #include "PARAMS.h"
21     #include "GRID.h"
22     #include "SEAICE_PARAMS.h"
23     CML#include "SEAICE_GRID.h"
24    
25     #ifdef ALLOW_AUTODIFF_TAMC
26     # include "tamc.h"
27     #endif
28    
29     C === Routine arguments ===
30     C myThid - Thread no. that called this routine.
31     _RL HEFF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,3,nSx,nSy)
32     _RL HEFFM (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
33     _RL DELTT
34     _RL myTime
35     INTEGER myIter
36     INTEGER myThid
37     CEndOfInterface
38    
39     C === Local variables ===
40     C i,j,k,bi,bj - Loop counters
41    
42     INTEGER i, j, bi, bj
43    
44     _RL DIFFA(1-OLx:sNx+OLx, 1-OLy:sNy+OLy,nSx,nSy)
45    
46     #ifdef ALLOW_AUTODIFF_TAMC
47     CADJ STORE heff = comlev1, key = ikey_dynamics
48     #endif /* ALLOW_AUTODIFF_TAMC */
49    
50    
51     C NOW DO DIFFUSION ON H(I,J,3)
52     C NOW CALCULATE DIFFUSION COEF ROUGHLY
53     DO bj=myByLo(myThid),myByHi(myThid)
54     DO bi=myBxLo(myThid),myBxHi(myThid)
55     DO j=1-OLy,sNy+OLy
56     DO i=1-OLx,sNx+OLx
57     DIFFA(I,J,bi,bj)=
58     & DIFF1*MIN( _dxF(I,J,bi,bj), _dyF(I,J,bi,bj))
59     ENDDO
60     ENDDO
61     ENDDO
62     ENDDO
63     CALL DIFFUS(HEFF,DIFFA,HEFFM,DELTT, myThid)
64    
65     DO bj=myByLo(myThid),myByHi(myThid)
66     DO bi=myBxLo(myThid),myBxHi(myThid)
67     DO j=1-OLy,sNy+OLy
68     DO i=1-OLx,sNx+OLx
69     HEFF(I,J,1,bi,bj)=(HEFF(I,J,1,bi,bj)+HEFF(I,J,3,bi,bj))
70     & *HEFFM(I,J,bi,bj)
71     ENDDO
72     ENDDO
73     ENDDO
74     ENDDO
75    
76     C NOW CALCULATE DIFFUSION COEF ROUGHLY
77     DO bj=myByLo(myThid),myByHi(myThid)
78     DO bi=myBxLo(myThid),myBxHi(myThid)
79     DO j=1-OLy,sNy+OLy
80     DO i=1-OLx,sNx+OLx
81     DIFFA(I,J,bi,bj)=
82     & -(MIN( _dxF(I,J,bi,bj), _dyF(I,J,bi,bj)))**2/DELTT
83     ENDDO
84     ENDDO
85     ENDDO
86     ENDDO
87     CALL DIFFUS(HEFF,DIFFA,HEFFM,DELTT, myThid)
88    
89     DO bj=myByLo(myThid),myByHi(myThid)
90     DO bi=myBxLo(myThid),myBxHi(myThid)
91     DO j=1-OLy,sNy+OLy
92     DO i=1-OLx,sNx+OLx
93     HEFF(I,J,1,bi,bj)=(HEFF(I,J,1,bi,bj)+HEFF(I,J,3,bi,bj))
94     & *HEFFM(I,J,bi,bj)
95     ENDDO
96     ENDDO
97     ENDDO
98     ENDDO
99    
100     RETURN
101     END

  ViewVC Help
Powered by ViewVC 1.1.22