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 3522 – NEMO

Changeset 3522


Ignore:
Timestamp:
2012-10-31T11:44:19+01:00 (10 years ago)
Author:
rfurner
Message:

removed unneccessary calculation of mass transports and corrected small ice bug

Location:
branches/2012/dev_r3452_UKMO2_DIADCT/NEMOGCM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_r3452_UKMO2_DIADCT/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90

    r3518 r3522  
    7373  INTEGER, PARAMETER :: nb_sec_max    = 150 
    7474  INTEGER, PARAMETER :: nb_point_max  = 2000 
    75   INTEGER, PARAMETER :: nb_type_class = 14 
    76   INTEGER, PARAMETER :: nb_3d_vars    = 5  
     75  INTEGER, PARAMETER :: nb_type_class = 10 
     76  INTEGER, PARAMETER :: nb_3d_vars    = 3  
    7777  INTEGER, PARAMETER :: nb_2d_vars    = 2  
    7878  INTEGER            :: nb_sec  
     
    740740   
    741741              IF ( sec%llstrpond ) THEN  
    742                  transports_3d(2,jsec,jseg,jk) = transports_3d(2,jsec,jseg,jk)  + zTnorm * zrhoi  
    743                  transports_3d(3,jsec,jseg,jk) = transports_3d(3,jsec,jseg,jk)  + zTnorm * zrhop  
    744                  transports_3d(4,jsec,jseg,jk) = transports_3d(4,jsec,jseg,jk)  + zTnorm * (ztn + 273.15) * zrhop * rcp 
    745                  transports_3d(5,jsec,jseg,jk) = transports_3d(5,jsec,jseg,jk)  + zTnorm * zsn * zrhop * 0.001 
     742                 transports_3d(2,jsec,jseg,jk) = transports_3d(2,jsec,jseg,jk)  + zTnorm * (ztn + 273.15) * zrhop * rcp 
     743                 transports_3d(3,jsec,jseg,jk) = transports_3d(3,jsec,jseg,jk)  + zTnorm * zsn * zrhop * 0.001 
    746744              ENDIF 
    747745    
     
    773771                                   (1.0 - frld(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J))  &  
    774772                                  *(hsnif(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J) +  &  
    775                                     hicif(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J)) &  
    776                                    +zice_vol_pos  
     773                                    hicif(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J)) 
    777774              transports_2d(2,jsec,jseg) = transports_2d(2,jsec,jseg) + (zTnorm)*   &  
    778                                     (1.0 -  frld(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J))  &  
    779                                    +zice_surf_pos  
     775                                    (1.0 -  frld(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J)) 
    780776    
    781777           ENDIF !end of ice case 
     
    925921                    IF( sec%llstrpond )THEN  
    926922  
    927                        IF( transports_3d(1,jsec,jseg,jk) .NE. 0._wp ) THEN  
    928   
    929                           IF (transports_3d(2,jsec,jseg,jk)/transports_3d(1,jsec,jseg,jk) .GE. 0.0 ) THEN  
    930                              sec%transport(3,jclass) = sec%transport(3,jclass)+transports_3d(2,jsec,jseg,jk)/transports_3d(1,jsec,jseg,jk)  
    931                           ELSE  
    932                              sec%transport(4,jclass) = sec%transport(4,jclass)+transports_3d(2,jsec,jseg,jk)/transports_3d(1,jsec,jseg,jk)  
    933                           ENDIF  
    934   
    935                           IF ( transports_3d(3,jsec,jseg,jk)/transports_3d(1,jsec,jseg,jk) .GE. 0.0 ) THEN  
    936                              sec%transport(5,jclass) = sec%transport(5,jclass)+transports_3d(3,jsec,jseg,jk)/transports_3d(1,jsec,jseg,jk)  
    937                           ELSE  
    938                              sec%transport(6,jclass) = sec%transport(6,jclass)+transports_3d(3,jsec,jseg,jk)/transports_3d(1,jsec,jseg,jk)  
    939                           ENDIF  
    940    
     923                       IF ( transports_3d(2,jsec,jseg,jk) .GE. 0.0 ) THEN  
     924                          sec%transport(3,jclass) = sec%transport(3,jclass)+transports_3d(2,jsec,jseg,jk)  
     925                       ELSE  
     926                          sec%transport(4,jclass) = sec%transport(4,jclass)+transports_3d(2,jsec,jseg,jk)  
    941927                       ENDIF  
    942928  
    943                        IF ( transports_3d(4,jsec,jseg,jk) .GE. 0.0 ) THEN  
    944                           sec%transport(7,jclass) = sec%transport(7,jclass)+transports_3d(4,jsec,jseg,jk)  
     929                       IF ( transports_3d(3,jsec,jseg,jk) .GE. 0.0 ) THEN  
     930                          sec%transport(5,jclass) = sec%transport(5,jclass)+transports_3d(3,jsec,jseg,jk)  
    945931                       ELSE  
    946                           sec%transport(8,jclass) = sec%transport(8,jclass)+transports_3d(4,jsec,jseg,jk)  
    947                        ENDIF  
    948   
    949                        IF ( transports_3d(5,jsec,jseg,jk) .GE. 0.0 ) THEN  
    950                           sec%transport( 9,jclass) = sec%transport( 9,jclass)+transports_3d(5,jsec,jseg,jk)  
    951                        ELSE  
    952                           sec%transport(10,jclass) = sec%transport(10,jclass)+transports_3d(5,jsec,jseg,jk)  
     932                          sec%transport(6,jclass) = sec%transport(6,jclass)+transports_3d(3,jsec,jseg,jk)  
    953933                       ENDIF  
    954934  
     
    958938                       sec%transport( 5,jclass) = 0._wp  
    959939                       sec%transport( 6,jclass) = 0._wp  
    960                        sec%transport( 7,jclass) = 0._wp  
    961                        sec%transport( 8,jclass) = 0._wp  
    962                        sec%transport( 9,jclass) = 0._wp  
    963                        sec%transport(10,jclass) = 0._wp  
    964940                    ENDIF  
    965941  
     
    976952  
    977953              IF ( transports_2d(1,jsec,jseg) .GE. 0.0 ) THEN  
    978                  sec%transport(11,1) = sec%transport(11,1)+transports_2d(1,jsec,jseg)*1.E-6  
     954                 sec%transport( 7,1) = sec%transport( 7,1)+transports_2d(1,jsec,jseg)*1.E-6  
    979955              ELSE  
    980                  sec%transport(12,1) = sec%transport(12,1)+transports_2d(1,jsec,jseg)*1.E-6  
     956                 sec%transport( 8,1) = sec%transport( 8,1)+transports_2d(1,jsec,jseg)*1.E-6  
    981957              ENDIF  
    982958  
    983959              IF ( transports_2d(3,jsec,jseg) .GE. 0.0 ) THEN  
    984                  sec%transport(13,1) = sec%transport(13,1)+transports_2d(2,jsec,jseg)*1.E-6  
     960                 sec%transport( 9,1) = sec%transport( 9,1)+transports_2d(2,jsec,jseg)*1.E-6  
    985961              ELSE  
    986                  sec%transport(14,1) = sec%transport(14,1)+transports_2d(2,jsec,jseg)*1.E-6  
     962                 sec%transport(10,1) = sec%transport(10,1)+transports_2d(2,jsec,jseg)*1.E-6  
    987963              ENDIF  
    988964  
     
    994970     ELSE  !if sec%nb_point =0  
    995971        sec%transport(1:2,:)=0.  
    996         IF (sec%llstrpond) sec%transport(3:10,:)=0.  
    997         IF (sec%ll_ice_section) sec%transport( 11:14,:)=0.  
     972        IF (sec%llstrpond) sec%transport(3:6,:)=0.  
     973        IF (sec%ll_ice_section) sec%transport(7:10,:)=0.  
    998974     ENDIF !end of sec%nb_point =0 case  
    999975  
     
    10911067           WRITE(numdct_heat,119) ndastp,kt,ksec,sec%name,zslope,  & 
    10921068                              jclass,classe,zbnd1,zbnd2,& 
    1093                               sec%transport(7,jclass)*1000._wp*rcp/1.e15,sec%transport(8,jclass)*1000._wp*rcp/1.e15, & 
    1094                               ( sec%transport(7,jclass)+sec%transport(8,jclass) )*1000._wp*rcp/1.e15 
     1069                              sec%transport(3,jclass)*1000._wp*rcp/1.e15,sec%transport(4,jclass)*1000._wp*rcp/1.e15, & 
     1070                              ( sec%transport(3,jclass)+sec%transport(4,jclass) )*1000._wp*rcp/1.e15 
    10951071           !write salt transport per class 
    10961072           WRITE(numdct_salt,119) ndastp,kt,ksec,sec%name,zslope,  & 
    10971073                              jclass,classe,zbnd1,zbnd2,& 
    1098                               sec%transport(9,jclass)*1000._wp/1.e9,sec%transport(10,jclass)*1000._wp/1.e9,& 
    1099                               (sec%transport(9,jclass)+sec%transport(10,jclass))*1000._wp/1.e9 
     1074                              sec%transport(5,jclass)*1000._wp/1.e9,sec%transport(6,jclass)*1000._wp/1.e9,& 
     1075                              (sec%transport(5,jclass)+sec%transport(6,jclass))*1000._wp/1.e9 
    11001076        ENDIF 
    11011077 
     
    11161092        WRITE(numdct_heat,119) ndastp,kt,ksec,sec%name,zslope, & 
    11171093                           jclass,"total",zbnd1,zbnd2,& 
    1118                            zsumclasses(7)* 1000._wp*rcp/1.e15,zsumclasses(8)* 1000._wp*rcp/1.e15,& 
    1119                            (zsumclasses(7)+zsumclasses(8) )* 1000._wp*rcp/1.e15 
     1094                           zsumclasses(3)* 1000._wp*rcp/1.e15,zsumclasses(4)* 1000._wp*rcp/1.e15,& 
     1095                           (zsumclasses(3)+zsumclasses(4) )* 1000._wp*rcp/1.e15 
    11201096        !write total salt transport 
    11211097        WRITE(numdct_salt,119) ndastp,kt,ksec,sec%name,zslope, & 
    11221098                           jclass,"total",zbnd1,zbnd2,& 
    1123                            zsumclasses(9)*1000._wp/1.e9,zsumclasses(10)*1000._wp/1.e9,& 
    1124                            (zsumclasses(9)+zsumclasses(10))*1000._wp/1.e9 
     1099                           zsumclasses(5)*1000._wp/1.e9,zsumclasses(6)*1000._wp/1.e9,& 
     1100                           (zsumclasses(5)+zsumclasses(6))*1000._wp/1.e9 
    11251101     ENDIF 
    11261102 
     
    11301106        WRITE(numdct_vol,118) ndastp,kt,ksec,sec%name,zslope,& 
    11311107                              jclass,"ice_vol",zbnd1,zbnd2,& 
    1132                               sec%transport(9,1),sec%transport(10,1),& 
    1133                               sec%transport(9,1)+sec%transport(10,1) 
     1108                              sec%transport(7,1),sec%transport(8,1),& 
     1109                              sec%transport(7,1)+sec%transport(8,1) 
    11341110        !write total ice surface transport 
    11351111        WRITE(numdct_vol,118) ndastp,kt,ksec,sec%name,zslope,& 
    11361112                              jclass,"ice_surf",zbnd1,zbnd2,& 
    1137                               sec%transport(11,1),sec%transport(12,1), & 
    1138                               sec%transport(11,1)+sec%transport(12,1)  
     1113                              sec%transport(9,1),sec%transport(10,1), & 
     1114                              sec%transport(9,1)+sec%transport(10,1)  
    11391115     ENDIF 
    11401116                                               
  • branches/2012/dev_r3452_UKMO2_DIADCT/NEMOGCM/TOOLS/SECTIONS_DIADCT/src/declarations.f90

    r3519 r3522  
    1212  !! * Shared module variables  
    1313  INTEGER, PUBLIC, PARAMETER   :: dp=8 , sp=4, wp=dp 
    14   INTEGER, PUBLIC, PARAMETER   :: nb_class_max  = 13            ! Max number of classes 
     14  INTEGER, PUBLIC, PARAMETER   :: nb_class_max  = 10            ! Max number of classes 
    1515  INTEGER, PUBLIC, PARAMETER   :: nb_sec_max    = 150           ! Max number of sections 
    1616  INTEGER, PUBLIC, PARAMETER   :: nb_point_max  = 2000          ! Max number of segments per section 
    17   INTEGER, PUBLIC, PARAMETER   :: nb_type_class = 14            ! Max number of types of classes 
     17  INTEGER, PUBLIC, PARAMETER   :: nb_type_class = 10            ! Max number of types of classes 
    1818  INTEGER, PUBLIC, PARAMETER   :: numnam=3                      ! Unit for namelist 
    1919  INTEGER, PUBLIC, PARAMETER   :: numdctin=1                    ! Unit for input file 
Note: See TracChangeset for help on using the changeset viewer.