Back to home page

MITgcm

 
 

    


File indexing completed on 2022-02-22 06:09:32 UTC

view on githubraw file Latest commit 16cc32c7 on 2022-02-21 18:12:34 UTC
813a6901ae Dani*0001 #include "STREAMICE_OPTIONS.h"
16cc32c739 Mart*0002 #ifdef ALLOW_AUTODIFF
                0003 # include "AUTODIFF_OPTIONS.h"
                0004 #endif
813a6901ae Dani*0005 
                0006 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0007 
                0008 CBOP
0fbff46b46 dngo*0009       SUBROUTINE STREAMICE_GET_VEL_RESID_ERR ( err_max,
                0010 #ifdef ALLOW_AUTODIFF_TAMC
                0011      I     ikey_nl,
                0012 #endif
                0013      I     myThid )
813a6901ae Dani*0014 C     /============================================================\
                0015 C     | SUBROUTINE                                                 |
                0016 C     | o                                                          |
                0017 C     |============================================================|
                0018 C     |                                                            |
                0019 C     \============================================================/
                0020       IMPLICIT NONE
                0021 
                0022 C     === Global variables ===
                0023 #include "SIZE.h"
                0024 #include "EEPARAMS.h"
                0025 #include "PARAMS.h"
                0026 #include "STREAMICE.h"
                0027 #include "STREAMICE_CG.h"
                0028 
                0029 C     !INPUT/OUTPUT ARGUMENTS
                0030       _RL err_max
0fbff46b46 dngo*0031 #ifdef ALLOW_AUTODIFF_TAMC
                0032       INTEGER ikey_nl
                0033 #endif
                0034       INTEGER myThid
1705d3e404 Jean*0035 
813a6901ae Dani*0036 #ifdef ALLOW_STREAMICE
                0037 
0fbff46b46 dngo*0038       INTEGER i, j, bi, bj
1705d3e404 Jean*0039 
                0040       _RL err_tempu, err_tempv
bbd6229661 Dani*0041       _RL err_sum
                0042       _RL err_sum_tile (nSx,nSy)
813a6901ae Dani*0043 
                0044         err_max = 0. _d 0
bbd6229661 Dani*0045         err_sum = 0. _d 0
                0046 
                0047         DO bj = myByLo(myThid), myByHi(myThid)
                0048          DO bi = myBxLo(myThid), myBxHi(myThid)
0fbff46b46 dngo*0049           err_sum_tile(bi,bj) = 0. _d 0
bbd6229661 Dani*0050          ENDDO
                0051         ENDDO
813a6901ae Dani*0052 
                0053         DO bj = myByLo(myThid), myByHi(myThid)
                0054          DO bi = myBxLo(myThid), myBxHi(myThid)
                0055           DO j=1,sNy
1705d3e404 Jean*0056            DO i=1,sNx
813a6901ae Dani*0057             Au_SI (i,j,bi,bj) = 0. _d 0
                0058             Av_SI (i,j,bi,bj) = 0. _d 0
                0059             ubd_SI (i,j,bi,bj) = 0. _d 0
1705d3e404 Jean*0060             vbd_SI (i,j,bi,bj) = 0. _d 0
813a6901ae Dani*0061            ENDDO
                0062           ENDDO
                0063          ENDDO
                0064         ENDDO
                0065 
                0066         CALL STREAMICE_CG_BOUND_VALS( myThid,
                0067      O    ubd_SI,
                0068      O    vbd_SI)
                0069 
                0070         CALL STREAMICE_CG_ACTION( myThid,
                0071      O    Au_SI,
                0072      O    Av_SI,
                0073      I    U_streamice,
                0074      I    V_streamice,
                0075      I    0, sNx+1, 0, sNy+1 )
                0076 
0fbff46b46 dngo*0077        IF (streamice_err_norm .LT. 1.0) then
bbd6229661 Dani*0078 
813a6901ae Dani*0079         DO bj = myByLo(myThid), myByHi(myThid)
                0080          DO bi = myBxLo(myThid), myBxHi(myThid)
                0081           DO j=1,sNy
                0082            DO i=1,sNx
0fbff46b46 dngo*0083 #ifdef ALLOW_AUTODIFF_TAMC
                0084 !$TAF STORE err_max = comlev1_stream_nl, key=ikey_nl
                0085 #endif
813a6901ae Dani*0086             err_tempu = 0. _d 0
                0087             err_tempv = 0. _d 0
                0088             IF (STREAMICE_umask(i,j,bi,bj).eq.1) THEN
                0089              err_tempu =
                0090      &        ABS (Au_SI(i,j,bi,bj)+0*ubd_SI(i,j,bi,bj) -
                0091      &            taudx_SI(i,j,bi,bj))
                0092             ENDIF
                0093             IF (STREAMICE_vmask(i,j,bi,bj).eq.1) THEN
                0094              err_tempv = MAX( err_tempu,
                0095      &        ABS (Av_SI(i,j,bi,bj)+0*vbd_SI(i,j,bi,bj) -
                0096      &            taudy_SI(i,j,bi,bj)))
                0097             ENDIF
                0098             IF (err_tempv .ge. err_max) THEN
                0099              err_max = err_tempv
                0100             ENDIF
                0101            ENDDO
                0102           ENDDO
                0103          ENDDO
                0104         ENDDO
                0105 
                0106         CALL GLOBAL_MAX_R8 (err_max, myThid)
                0107 
bbd6229661 Dani*0108        ELSE
                0109 
                0110         DO bj = myByLo(myThid), myByHi(myThid)
                0111          DO bi = myBxLo(myThid), myBxHi(myThid)
                0112           DO j=1,sNy
                0113            DO i=1,sNx
                0114 
                0115             IF (STREAMICE_umask(i,j,bi,bj).eq.1) THEN
0fbff46b46 dngo*0116              err_sum_tile(bi,bj) = err_sum_tile(bi,bj) +
bbd6229661 Dani*0117      &        (ABS (Au_SI(i,j,bi,bj)+0*ubd_SI(i,j,bi,bj) -
                0118      &            taudx_SI(i,j,bi,bj))) ** streamice_err_norm
                0119             ENDIF
                0120             IF (STREAMICE_vmask(i,j,bi,bj).eq.1) THEN
0fbff46b46 dngo*0121              err_sum_tile(bi,bj) = err_sum_tile(bi,bj) +
bbd6229661 Dani*0122      &        (ABS (Av_SI(i,j,bi,bj)+0*vbd_SI(i,j,bi,bj) -
                0123      &            taudy_SI(i,j,bi,bj))) ** streamice_err_norm
                0124             ENDIF
0fbff46b46 dngo*0125 
bbd6229661 Dani*0126            ENDDO
                0127           ENDDO
                0128          ENDDO
                0129         ENDDO
                0130 
                0131         CALL GLOBAL_SUM_TILE_RL( err_sum_tile, err_sum, myThid )
                0132 
                0133         err_max = err_sum ** (1./streamice_err_norm)
                0134 
                0135        ENDIF
                0136 
813a6901ae Dani*0137 #endif
                0138       RETURN
                0139       END