New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 8175 – NEMO

Changeset 8175


Ignore:
Timestamp:
2017-06-14T18:31:18+02:00 (7 years ago)
Author:
vancop
Message:

Final commit SIMIP outputs, phase 2

Location:
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/ice.F90

    r8172 r8175  
    426426   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_ymtrp_ice !: Y-component of ice mass transport (kg/s) 
    427427   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_xmtrp_snw !: X-component of snow mass transport (kg/s) 
    428    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_ymtrp_ice !: Y-component of snow mass transport (kg/s) 
    429    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_xatran   !: X-component of area transport (m2/s) 
    430    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_yatran   !: Y-component of area transport (m2/s) 
     428   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_ymtrp_snw !: Y-component of snow mass transport (kg/s) 
     429   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_xatrp    !: X-component of area transport (m2/s) 
     430   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_yatrp    !: Y-component of area transport (m2/s) 
    431431   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_fc_bo    !: Bottom conduction flux (W/m2) 
    432432   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_fc_su    !: Surface conduction flux (W/m2) 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90

    r8172 r8175  
    6868         &         zdiag_volu_sh  
    6969 
    70 !     ! Strait / passage fluxes (SIMIP) 
    71 !     REAL(wp), DIMENSION(4) ::  &                                    ! Strait fluxes for output 
    72 !        &         zdiag_area_strait  ,   &                                    ! 1=Fram Strait, 2=CAA, 3= Barents, 4 = Bering 
    73 !        &         zdiag_mice_strait  ,   & 
    74 !        &         zdiag_msno_strait 
    75  
    76 !     REAL(wp) :: zfarea_u, zfmice_u, zfmsno_u, zfarea_v, zfmice_v, zfmsno_v   ! dummy fluxes 
    77  
    78 !     REAL(wp), DIMENSION(11) :: & 
    79 !        &         zui, zuj, zvi, zvj                                          ! strait addresses 
    80  
    81 !     INTEGER  :: Nu, Nv, &                                                    ! passage size 
    82 !                 i_strait                                                     ! strait number 
    83  
    84 !     INTEGER, DIMENSION(4)  :: ji0, ji1, jj0, jj1 
    85        
    8670      !!------------------------------------------------------------------- 
    8771 
     
    362346 
    363347      ENDIF  
    364 !      !------------------------------------- 
    365 !      ! Area, ice mass and snow mass fluxes 
    366 !      !------------------------------------- 
    367 !      ! SIMIP requires fluxes through passages and straits 
    368 !      ! Easiest implementation is via offline python script 
    369 !      ! strait_ar_x 
    370 ! 
    371 !      !-------------------------------- 
    372 !      ! Fluxes through straits (SIMIP) 
    373 !      !-------------------------------- 
    374 !      ! 
    375 !      ! Valid only for ORCA-like grids 
    376 !      ! 
    377 !      ! 4 Arctic passages are considered (Fram, CAA, Barents, Bering; see Notz et al (GMD 2016) for definitions) 
    378 !      ! 
    379 !      ! Fram and Bering  straits are easy because they follow parallels 
    380 !      ! Barents and Canadian Arctic Archipelago are less easy because they do not, which is why they look so awful. 
    381 !      !  
    382 ! 
    383 !      IF ( iom_use( "strait_arfl" ) .OR. iom_use( "strait_mifl" ) .OR. iom_use( "strait_msfl" ) .AND. cp_cfg == "orca" ) THEN 
    384 ! 
    385 !         zdiag_area_strait(:) = 0._wp   ;   zdiag_mice_strait(:) = 0._wp   ;   zdiag_msno_strait(:) = 0._wp 
    386 !    
    387 !         !------------------------------ 
    388 !         ! === Fram & Bering Straits === 
    389 !         !------------------------------ 
    390 !           
    391 !         SELECT CASE ( jp_cfg )  
    392 !           
    393 !         CASE ( 2 )   ! --- ORCA2 
    394 !           
    395 !            ! Fram Strait   (i_strait = 1) 
    396 !            ji0(1) = 133   ;   ji1(1) = 136 
    397 !            jj0(1) = 136  
    398 ! 
    399 !            ! Bering Strait (i_strait = 4) 
    400 !            ji0(4) = 55    ;   ji1(4) = 56 
    401 !            jj0(4) = 122 
    402 !           
    403 !         CASE ( 1 )   ! --- eORCA1 
    404 !           
    405 !            ! Fram Strait 
    406 !            ji0(1) = 268   ;   ji1(1) = 277 
    407 !            jj0(1) = 311 
    408 ! 
    409 !            ! Bering Strait 
    410 !            ji0(4) = 113   ;   jj1(4) = 115 
    411 !            jj0(4) = 285 
    412 !            
    413 !         END SELECT 
    414 !           
    415 !         DO i_strait = 1, 4, 3 
    416 ! 
    417 !            DO ji = mi0( ji0(i_strait) ), mi1(ji1 (i_strait) ) 
    418 !               jj = mj0( jj0(i_strait) ) 
    419 !    
    420 !               zdiag_area_strait(i_strait) = zdiag_area_strait(i_strait)                                 &     ! --- ice area flux --- 
    421 !                   &                + at_i(ji,jj-1) * e12t(ji,jj-1) * MAX( v_ice(ji,jj-1), 0.0 )         &     ! northwards (positive) flow 
    422 !                   &                + at_i(ji,jj  ) * e12t(ji,jj)   * MIN( v_ice(ji,jj-1), 0.0 )               ! southwards (negative) flow 
    423 !       
    424 !               zdiag_mice_strait(i_strait) = zdiag_mice_strait(i_strait) + rhoic *                       &     ! --- ice mass flux  --- 
    425 !                   &                ( vt_i(ji,jj-1) * e12t(ji,jj-1) * MAX( v_ice(ji,jj-1), 0.0 )         &  
    426 !                   &                + vt_i(ji,jj  ) * e12t(ji,jj)   * MIN( v_ice(ji,jj-1), 0.0 ) )          
    427 !       
    428 !               zdiag_msno_strait(i_strait) = zdiag_msno_strait(i_strait) + rhosn *                       &     ! --- snow mass flux --- 
    429 !                   &                ( vt_s(ji,jj-1) * e12t(ji,jj-1) * MAX( v_ice(ji,jj-1), 0.0 )         &  
    430 !                   &                + vt_s(ji,jj  ) * e12t(ji,jj)   * MIN( v_ice(ji,jj-1), 0.0 ) )   
    431 !    
    432 !            END DO 
    433 ! 
    434 !         END DO 
    435 ! 
    436 !         !--------------------- 
    437 !         ! === Barents opening 
    438 !         !--------------------- 
    439 !    
    440 !         SELECT CASE ( jp_cfg )  
    441 ! 
    442 !            CASE ( 1 )   ! 'eORCA1' 
    443 ! 
    444 !               Nu = 11   ! U-Flow 
    445 !               zui(1:Nu) = (/ 282,283,284,285,286,286,287,288,289,290,292/) 
    446 !               zuj(1:Nu) = (/ 308,307,306,305,304,303,302,301,300,299,298/) 
    447 ! 
    448 !               Nv = 9    ! V-Flow 
    449 !               zvi(1:Nv) = (/ 282,283,284,285,286,287,288,289,290/) 
    450 !               zvj(1:Nv) = (/ 308,307,306,305,303,302,301,300,299/) 
    451 ! 
    452 !            CASE ( 2 )   ! 'ORCA2' 
    453 ! 
    454 !               Nu = 5    ! U-Flow 
    455 !               zui(1:Nu) = (/ 141,142,142,143,144 /) 
    456 !               zuj(1:Nu) = (/ 134,133,132,131,130 /) 
    457 ! 
    458 !               Nv = 4    ! V-Flow 
    459 !               zvi(1:Nv) = (/ 140,141,142,143 /) 
    460 !               zvj(1:Nv) = (/ 135,134,132,131 /) 
    461 ! 
    462 !         END SELECT 
    463 ! 
    464 !         ! Barents U-flow 
    465 !         zfarea_u = 0._wp   ;   zfmice_u = 0._wp   ;   zfmsno_u = 0._wp 
    466 !    
    467 !         DO ii = 1, Nu 
    468 ! 
    469 !            ji = mi0(zui(ii)) 
    470 !            jj = mj0(zuj(ii)) 
    471 ! 
    472 !            zfarea_u          = zfarea_u                                           & ! --- ice area zonal flux --- 
    473 !                &             + at_i(ji-1,jj) * e12t(ji-1,jj) * MAX( u_ice(ji-1,jj), 0.0 )         & ! --- northward 
    474 !                &             + at_i(ji,jj  ) * e12t(ji,jj)   * MIN( u_ice(ji-1,jj), 0.0 )           ! --- southward 
    475 !            zfmice_u          = zfmice_u + rhoic *                                 & ! --- ice mass zonal flux ---  
    476 !                &             ( vt_i(ji-1,jj) * e12t(ji-1,jj) * MAX( u_ice(ji-1,jj), 0.0 )         &    
    477 !                &             + vt_i(ji,jj  ) * e12t(ji,jj)   * MIN( u_ice(ji-1,jj), 0.0 ) )           
    478 !            zfmsno_u          = zfmsno_u + rhosn *                                 & ! --- snow mass zonal flux ---  
    479 !                &             ( vt_s(ji-1,jj) * e12t(ji-1,jj) * MAX( u_ice(ji-1,jj), 0.0 )         &    
    480 !                &             + vt_s(ji,jj  ) * e12t(ji,jj)   * MIN( u_ice(ji-1,jj), 0.0 ) )           
    481 !         END DO 
    482 !    
    483 !         ! Barents V-flow 
    484 !         zfarea_v = 0._wp   ;   zfmice_v = 0._wp   ;   zfmsno_v = 0._wp 
    485 ! 
    486 !         DO ii  = 1, Nv   
    487 ! 
    488 !            ji = mi0(zvi(ii)) 
    489 !            jj = mj0(zvj(ii)) 
    490 ! 
    491 !            zfarea_v          = zfarea_v                                           & ! --- ice area meridian flux --- 
    492 !                &             + at_i(ji,jj-1) * e12t(ji,jj-1) * MAX( u_ice(ji,jj-1), 0.0 )         & ! --- eastward 
    493 !                &             + at_i(ji,jj  ) * e12t(ji,jj)   * MIN( u_ice(ji,jj-1), 0.0 )           ! --- westward 
    494 !            zfmice_v          = zfmice_v + rhoic *                                 & ! --- ice mass meridian flux --- 
    495 !                &             ( vt_i(ji,jj-1) * e12t(ji,jj-1) * MAX( u_ice(ji,jj-1), 0.0 )         & ! 
    496 !                &             + vt_i(ji,jj  ) * e12t(ji,jj)   * MIN( u_ice(ji,jj-1), 0.0 ) )         ! 
    497 !            zfmsno_v          = zfmsno_v + rhosn *                                 & ! --- snow mass meridian flux --- 
    498 !                &             ( vt_i(ji,jj-1) * e12t(ji,jj-1) * MAX( u_ice(ji,jj-1), 0.0 )         & ! 
    499 !                &             + vt_i(ji,jj  ) * e12t(ji,jj)   * MIN( u_ice(ji,jj-1), 0.0 ) )         ! 
    500 !         END DO 
    501 !    
    502 !         ! Sum Barents U-/V- contributions 
    503 !         zdiag_area_strait(3) = zfarea_u + zfarea_v  
    504 !         zdiag_mice_strait(3) = zfmice_u + zfmice_v 
    505 !         zdiag_msno_strait(3) = zfmsno_u + zfmsno_v 
    506 ! 
    507 !         !--------------------- 
    508 !         ! === CAA throughflow 
    509 !         !--------------------- 
    510 !    
    511 !         SELECT CASE ( jp_cfg )  
    512 ! 
    513 !            CASE ( 1 )   ! eORCA1 
    514 ! 
    515 !               ! V-flow through Nares Strait 
    516 !               Nv = 4 
    517 !               zvi(1:Nv) = (/ 254,255,256,257 /) 
    518 !               zvj(1:Nv) = (/ 317,317,317,317 /) 
    519 ! 
    520 !               ! U-flow through Queen Elisabeth Islands and McClure straits 
    521 !               Nu = 8  
    522 !               zui(1:Nu) = (/ 231,231,231,  132,132,132,132,132  /) 
    523 !               zuj(1:Nu) = (/ 328,329,330,  318,319,320,321,322  /) 
    524 ! 
    525 !               zfarea_u = 0._wp   ;   zfmice_u = 0._wp   ;   zfmsno_u = 0._wp 
    526 ! 
    527 !               DO ii = 1, Nu 
    528 ! 
    529 !                  ji = mi0(zui(ii)) 
    530 !                  jj = mj0(zuj(ii)) 
    531 ! 
    532 !                  zfarea_u          = zfarea_u                                                           & ! --- ice area zonal flux --- 
    533 !                      &             + at_i(ji-1,jj) * e12t(ji-1,jj) * MAX( u_ice(ji-1,jj), 0.0 )         & ! --- eastward 
    534 !                      &             + at_i(ji,jj  ) * e12t(ji,jj)   * MIN( u_ice(ji-1,jj), 0.0 )           ! --- westward 
    535 !                  zfmice_u          = zfmice_u + rhoic *                                                 & ! --- ice mass zonal flux ---  
    536 !                      &             ( vt_i(ji-1,jj) * e12t(ji-1,jj) * MAX( u_ice(ji-1,jj), 0.0 )         &    
    537 !                      &             + vt_i(ji,jj  ) * e12t(ji,jj)   * MIN( u_ice(ji-1,jj), 0.0 ) )           
    538 !                  zfmsno_u          = zfmsno_u + rhosn *                                                 & ! --- snow mass zonal flux ---  
    539 !                      &             ( vt_s(ji-1,jj) * e12t(ji-1,jj) * MAX( u_ice(ji-1,jj), 0.0 )         &    
    540 !                      &             + vt_s(ji,jj  ) * e12t(ji,jj)   * MIN( u_ice(ji-1,jj), 0.0 ) )           
    541 ! 
    542 !               END DO 
    543 ! 
    544 ! 
    545 !            CASE ( 2 )   ! ORCA2 
    546 ! 
    547 !               ! V-flow through Nares Strait 
    548 !               Nv = 2 
    549 !               zvi(1:Nv) = (/ 117,118 /) 
    550 !               zvj(1:Nv) = (/ 145,145 /) 
    551 ! 
    552 !               ! U-flow through Queen Elisabeth Islands and McClure straits (not resolved in ORCA2) 
    553 !               zfarea_u = 0._wp   ;   zfmice_u = 0._wp   ;   zfmsno_u = 0._wp 
    554 ! 
    555 !            END SELECT 
    556 !    
    557 !         ! V-flow through Nares Strait 
    558 !         zfarea_v = 0._wp   ;   zfmice_v = 0._wp   ;   zfmsno_v = 0._wp 
    559 !    
    560 !         DO ii = 1, Nv   
    561 ! 
    562 !            ji = mi0(zvi(ii)) 
    563 !            jj = mj0(zvj(ii)) 
    564 ! 
    565 !            zfarea_v          = zfarea_v                                           & ! --- ice area meridian flux --- 
    566 !                &             + at_i(ji,jj-1) * e12t(ji,jj-1) * MAX( u_ice(ji,jj-1), 0.0 )         & ! --- eastward 
    567 !                &             + at_i(ji,jj  ) * e12t(ji,jj)   * MIN( u_ice(ji,jj-1), 0.0 )           ! --- westward 
    568 !            zfmice_v          = zfmice_v + rhoic *                                 & ! --- ice mass meridian flux --- 
    569 !                &             ( vt_i(ji,jj-1) * e12t(ji,jj-1) * MAX( u_ice(ji,jj-1), 0.0 )         & ! 
    570 !                &             + vt_i(ji,jj  ) * e12t(ji,jj)   * MIN( u_ice(ji,jj-1), 0.0 ) )         ! 
    571 !            zfmsno_v          = zfmsno_v + rhosn *                                 & ! --- snow mass meridian flux --- 
    572 !                &             ( vt_i(ji,jj-1) * e12t(ji,jj-1) * MAX( u_ice(ji,jj-1), 0.0 )         & ! 
    573 !                &             + vt_i(ji,jj  ) * e12t(ji,jj)   * MIN( u_ice(ji,jj-1), 0.0 ) )         ! 
    574 ! 
    575 !         END DO 
    576 ! 
    577 !         ! Sum U/V contributions 
    578 !         zdiag_area_strait(2) = zfarea_u + zfarea_v  
    579 !         zdiag_mice_strait(2) = zfmice_u + zfmice_v 
    580 !         zdiag_msno_strait(2) = zfmsno_u + zfmsno_v 
    581 !    
    582 !         ! === Ncdf output 
    583 !         IF ( iom_use("strait_arfl") ) CALL iom_put( "strait_arfl", zdiag_area_strait ) 
    584 !         IF ( iom_use("strait_mifl") ) CALL iom_put( "strait_mifl", zdiag_mice_strait ) 
    585 !         IF ( iom_use("strait_msfl") ) CALL iom_put( "strait_msfl", zdiag_msno_strait )  
    586 ! 
    587 !         WRITE(numout,*) " area flx ", zdiag_area_strait(:) 
    588 !         WRITE(numout,*) " mice flx ", zdiag_mice_strait(:) 
    589 !         WRITE(numout,*) " msno flx ", zdiag_msno_strait(:) 
    590 ! 
    591 !      ENDIF 
    592348 
    593349      !     !  Create an output files (output.lim.abort.nc) if S < 0 or u > 20 m/s 
Note: See TracChangeset for help on using the changeset viewer.