File indexing completed on 2023-08-04 05:10:42 UTC
view on githubraw file Latest commit 45315406 on 2023-08-03 16:50:12 UTC
2fd913c523 Mart*0001 #include "SEAICE_OPTIONS.h"
0002
0003
0004
0005
ec0d7df165 Mart*0006 SUBROUTINE SEAICE_CALC_RESIDUAL(
0007 I uIceLoc, vIceLoc,
0008 O uIceRes, vIceRes,
2fd913c523 Mart*0009 I newtonIter, krylovIter, myTime, myIter, myThid )
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 IMPLICIT NONE
0023
0024
0025 #include "SIZE.h"
0026 #include "EEPARAMS.h"
0027 #include "SEAICE_SIZE.h"
df1dac8b7b Mart*0028 #ifdef SEAICE_ALLOW_BOTTOMDRAG
0029 #include "SEAICE_PARAMS.h"
ec0d7df165 Mart*0030 #endif /* SEAICE_ALLOW_BOTTOMDRAG */
2fd913c523 Mart*0031 #include "SEAICE.h"
0032
0033
0034
0035
0036
0037
0038
0039
0040 _RL myTime
0041 INTEGER myIter
0042 INTEGER myThid
0043 INTEGER newtonIter
0044 INTEGER krylovIter
0045
0046 _RL uIceLoc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0047 _RL vIceLoc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0048
0049 _RL uIceRes(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0050 _RL vIceRes(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0051
45315406aa Mart*0052 #if ( defined SEAICE_CGRID && defined SEAICE_ALLOW_JFNK )
ec0d7df165 Mart*0053
2fd913c523 Mart*0054 _RL uIceLHS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0055 _RL vIceLHS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0056
0057 _RL uIceRHS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0058 _RL vIceRHS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0059
0060
0061 INTEGER i,j,bi,bj
0062
0063
0064
0065 DO bj=myByLo(myThid),myByHi(myThid)
0066 DO bi=myBxLo(myThid),myBxHi(myThid)
ec0d7df165 Mart*0067 DO J=1-OLy,sNy+OLy
0068 DO I=1-OLx,sNx+OLx
2fd913c523 Mart*0069 uIceLHS(I,J,bi,bj) = 0. _d 0
0070 vIceLHS(I,J,bi,bj) = 0. _d 0
0071 uIceRHS(I,J,bi,bj) = 0. _d 0
0072 vIceRHS(I,J,bi,bj) = 0. _d 0
0073 ENDDO
0074 ENDDO
0075 ENDDO
0076 ENDDO
0077
0078
0079 CALL SEAICE_OCEANDRAG_COEFFS(
ec0d7df165 Mart*0080 I uIceLoc, vIceLoc, HEFFM,
2fd913c523 Mart*0081 O DWATN,
0082 I krylovIter, myTime, myIter, myThid )
df1dac8b7b Mart*0083 #ifdef SEAICE_ALLOW_BOTTOMDRAG
d5254b4e3d Mart*0084 CALL SEAICE_BOTTOMDRAG_COEFFS(
ec0d7df165 Mart*0085 I uIceLoc, vIceLoc, HEFFM,
df1dac8b7b Mart*0086 #ifdef SEAICE_ITD
0087 I HEFFITD, AREAITD, AREA,
0088 #else
0089 I HEFF, AREA,
ec0d7df165 Mart*0090 #endif
df1dac8b7b Mart*0091 O CbotC,
0092 I krylovIter, myTime, myIter, myThid )
0093 #endif /* SEAICE_ALLOW_BOTTOMDRAG */
2fd913c523 Mart*0094 CALL SEAICE_CALC_STRAINRATES(
0095 I uIceLoc, vIceLoc,
0096 O e11, e22, e12,
0097 I krylovIter, myTime, myIter, myThid )
0098 CALL SEAICE_CALC_VISCOSITIES(
8e32c48b8f Mart*0099 I e11, e22, e12, SEAICE_zMin, SEAICE_zMax, HEFFM, press0,
0100 I tensileStrFac,
0fd6b2de1a Mart*0101 O eta, etaZ, zeta, zetaZ, press, deltaC,
2fd913c523 Mart*0102 I krylovIter, myTime, myIter, myThid )
0103
ec0d7df165 Mart*0104
0105
2fd913c523 Mart*0106
0107
0108
0109
0110
0111
0112 CALL SEAICE_CALC_RHS(
0113 O uIceRHS, vIceRHS,
0114 I newtonIter, krylovIter, myTime, myIter, myThid )
0115
0116
0117
0118
df1dac8b7b Mart*0119
2fd913c523 Mart*0120
0121
0122
0123 CALL SEAICE_CALC_LHS(
0124 I uIceLoc, vIceLoc,
0125 O uIceLHS, vIceLHS,
0126 I newtonIter, myTime, myIter, myThid )
0127
0128
0129
0130
0131
0132
0133 DO bj=myByLo(myThid),myByHi(myThid)
0134 DO bi=myBxLo(myThid),myBxHi(myThid)
0135 DO J=1,sNy
0136 DO I=1,sNx
0137 uIceRes(I,J,bi,bj) = uIceLHS(I,J,bi,bj) - uIceRHS(I,J,bi,bj)
0138 vIceRes(I,J,bi,bj) = vIceLHS(I,J,bi,bj) - vIceRHS(I,J,bi,bj)
0139 ENDDO
0140 ENDDO
0141 ENDDO
0142 ENDDO
0143
45315406aa Mart*0144 #endif /* SEAICE_CGRID and SEAICE_ALLOW_JFNK */
2fd913c523 Mart*0145
0146 RETURN
0147 END