| 78 | C     3. staf -v1 -forward -toplevel seaice_calc_residual -input uIceLoc,viceLoc -output uIceRes,vIceRes taf_input.f | C     3. staf -v1 -forward -toplevel seaice_calc_residual -input uIceLoc,viceLoc -output uIceRes,vIceRes taf_input.f | 
| 79 | C     4. insert content of taf_input_ftl.f at the end of this file | C     4. insert content of taf_input_ftl.f at the end of this file | 
| 80 | C     5. add the following code and comment out the finite difference code | C     5. add the following code and comment out the finite difference code | 
| 81 |  | C | 
| 82 |  | C     Instruction for using TAF 2.4 and higher (or staf with default -v2 | 
| 83 |  | C     starting with version 2.0): | 
| 84 |  | C | 
| 85 |  | C     1. make small_f | 
| 86 |  | C     2. staf -forward -toplevel seaice_calc_residual -input uIceLoc,viceLoc -output uIceRes,vIceRes seaice_calc_residual.f seaice_oceandrag_coeffs.f seaice_calc_strainrates.f seaice_calc_viscosities.f seaice_calc_rhs.f seaice_calc_lhs.f | 
| 87 |  | C     3. copy files seaice_*_tl.f to the corresponding seaice_*.f files, | 
| 88 |  | C        e.g. with this bash script: | 
| 89 |  | C     for file in `ls seaice_*_tl.f`; do | 
| 90 |  | C       nfile=`echo $file | awk -F_ '{printf "%s_%s_%s.f", $1,$2,$3}'`; | 
| 91 |  | C       \cp -f $file $nfile | 
| 92 |  | C     done | 
| 93 |  | C     4. add the following code, change "call g_seaice_calc_residual" to "call seaice_calc_residual_tl", and comment out the finite difference code | 
| 94 | CML      _RL g_duIce(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | CML      _RL g_duIce(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 95 | CML      _RL g_dvIce(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | CML      _RL g_dvIce(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 96 | CML      _RL g_uIceRes(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | CML      _RL g_uIceRes(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 115 | CML      CALL G_SEAICE_CALC_RESIDUAL( uIce, g_duice, vIce, | CML      CALL G_SEAICE_CALC_RESIDUAL( uIce, g_duice, vIce, | 
| 116 | CML     $g_dvice, uiceresp, g_uiceres, viceresp, g_viceres, newtoniter, | CML     $g_dvice, uiceresp, g_uiceres, viceresp, g_viceres, newtoniter, | 
| 117 | CML     $kryloviter, mytime, myiter, mythid ) | CML     $kryloviter, mytime, myiter, mythid ) | 
| 118 |  | CMLCML      For staf -v2 replace the above with the below call | 
| 119 |  | CMLCML      CALL SEAICE_CALC_RESIDUAL_TL( uIce, g_duice, vIce, | 
| 120 |  | CMLCML     $g_dvice, uiceresp, g_uiceres, viceresp, g_viceres, newtoniter, | 
| 121 |  | CMLCML     $kryloviter, mytime, myiter, mythid ) | 
| 122 | CML | CML | 
| 123 | CML      DO bj=myByLo(myThid),myByHi(myThid) | CML      DO bj=myByLo(myThid),myByHi(myThid) | 
| 124 | CML       DO bi=myBxLo(myThid),myBxHi(myThid) | CML       DO bi=myBxLo(myThid),myBxHi(myThid) | 
| 132 | CML      ENDDO | CML      ENDDO | 
| 133 |  |  | 
| 134 | C     Initialise | C     Initialise | 
| 135 | epsilon = 1. _d -06 | epsilon = SEAICE_JFNKepsilon | 
| 136 | reps    = 1. _d 0/epsilon | reps    = 1. _d 0/epsilon | 
| 137 |  |  | 
| 138 | DO bj=myByLo(myThid),myByHi(myThid) | DO bj=myByLo(myThid),myByHi(myThid) |