- Timestamp:
- 2020-09-14T17:40:34+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@13382 sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/DIA/diadct.F90
r10425 r13463 11 11 !! 3.4 ! 09/2011 (C Bricaud) 12 12 !!---------------------------------------------------------------------- 13 #if defined key_diadct 14 !!---------------------------------------------------------------------- 15 !! 'key_diadct' : 16 !!---------------------------------------------------------------------- 13 #if ! defined key_agrif 14 !! ==>> CAUTION: does not work with agrif 17 15 !!---------------------------------------------------------------------- 18 16 !! dia_dct : Compute the transport through a sec. … … 42 40 43 41 PUBLIC dia_dct ! routine called by step.F90 44 PUBLIC dia_dct_init ! routine called by opa.F90 45 PUBLIC diadct_alloc ! routine called by nemo_init in nemogcm.F90 46 PRIVATE readsec 47 PRIVATE removepoints 48 PRIVATE transport 49 PRIVATE dia_dct_wri 50 51 LOGICAL, PUBLIC, PARAMETER :: lk_diadct = .TRUE. !: model-data diagnostics flag 52 53 INTEGER :: nn_dct ! Frequency of computation 54 INTEGER :: nn_dctwri ! Frequency of output 55 INTEGER :: nn_secdebug ! Number of the section to debug 42 PUBLIC dia_dct_init ! routine called by nemogcm.F90 43 44 ! !!** namelist variables ** 45 LOGICAL, PUBLIC :: ln_diadct !: Calculate transport thru a section or not 46 INTEGER :: nn_dct ! Frequency of computation 47 INTEGER :: nn_dctwri ! Frequency of output 48 INTEGER :: nn_secdebug ! Number of the section to debug 56 49 57 50 INTEGER, PARAMETER :: nb_class_max = 10 … … 73 66 TYPE SECTION 74 67 CHARACTER(len=60) :: name ! name of the sec 75 LOGICAL :: llstrpond ! true if you want the computation of salt and 76 ! heat transports 68 LOGICAL :: llstrpond ! true if you want the computation of salt and heat transports 77 69 LOGICAL :: ll_ice_section ! ice surface and ice volume computation 78 70 LOGICAL :: ll_date_line ! = T if the section crosses the date-line … … 81 73 INTEGER, DIMENSION(nb_point_max) :: direction ! vector direction of the point in the section 82 74 CHARACTER(len=40),DIMENSION(nb_class_max) :: classname ! characteristics of the class 83 REAL(wp), DIMENSION(nb_class_max) :: zsigi ,&! in-situ density classes (99 if you don't want)84 zsigp ,&! potential density classes (99 if you don't want)85 zsal ,&! salinity classes (99 if you don't want)86 ztem ,&! temperature classes(99 if you don't want)87 75 REAL(wp), DIMENSION(nb_class_max) :: zsigi ! in-situ density classes (99 if you don't want) 76 REAL(wp), DIMENSION(nb_class_max) :: zsigp ! potential density classes (99 if you don't want) 77 REAL(wp), DIMENSION(nb_class_max) :: zsal ! salinity classes (99 if you don't want) 78 REAL(wp), DIMENSION(nb_class_max) :: ztem ! temperature classes(99 if you don't want) 79 REAL(wp), DIMENSION(nb_class_max) :: zlay ! level classes (99 if you don't want) 88 80 REAL(wp), DIMENSION(nb_type_class,nb_class_max) :: transport ! transport output 89 81 REAL(wp) :: slopeSection ! slope of the section … … 97 89 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: transports_2d 98 90 91 92 !! * Substitutions 93 # include "domzgr_substitute.h90" 99 94 !!---------------------------------------------------------------------- 100 95 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 102 97 !! Software governed by the CeCILL license (see ./LICENSE) 103 98 !!---------------------------------------------------------------------- 99 104 100 CONTAINS 105 101 106 INTEGER FUNCTION diadct_alloc() 107 !!---------------------------------------------------------------------- 108 !! *** FUNCTION diadct_alloc *** 109 !!---------------------------------------------------------------------- 110 INTEGER :: ierr(2) 111 !!---------------------------------------------------------------------- 112 113 ALLOCATE(transports_3d(nb_3d_vars,nb_sec_max,nb_point_max,jpk), STAT=ierr(1) ) 114 ALLOCATE(transports_2d(nb_2d_vars,nb_sec_max,nb_point_max) , STAT=ierr(2) ) 115 116 diadct_alloc = MAXVAL( ierr ) 117 IF( diadct_alloc /= 0 ) CALL ctl_stop( 'STOP', 'diadct_alloc: failed to allocate arrays' ) 118 119 END FUNCTION diadct_alloc 120 102 INTEGER FUNCTION diadct_alloc() 103 !!---------------------------------------------------------------------- 104 !! *** FUNCTION diadct_alloc *** 105 !!---------------------------------------------------------------------- 106 107 ALLOCATE( transports_3d(nb_3d_vars,nb_sec_max,nb_point_max,jpk), & 108 & transports_2d(nb_2d_vars,nb_sec_max,nb_point_max) , STAT=diadct_alloc ) 109 110 CALL mpp_sum( 'diadct', diadct_alloc ) 111 IF( diadct_alloc /= 0 ) CALL ctl_stop( 'STOP', 'diadct_alloc: failed to allocate arrays' ) 112 113 END FUNCTION diadct_alloc 121 114 122 115 SUBROUTINE dia_dct_init … … 130 123 INTEGER :: ios ! Local integer output status for namelist read 131 124 !! 132 NAMELIST/nam dct/nn_dct,nn_dctwri,nn_secdebug125 NAMELIST/nam_diadct/ln_diadct, nn_dct, nn_dctwri, nn_secdebug 133 126 !!--------------------------------------------------------------------- 134 127 135 REWIND( numnam_ref ) ! Namelist namdct in reference namelist : Diagnostic: transport through sections 136 READ ( numnam_ref, namdct, IOSTAT = ios, ERR = 901) 137 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdct in reference namelist', lwp ) 138 139 REWIND( numnam_cfg ) ! Namelist namdct in configuration namelist : Diagnostic: transport through sections 140 READ ( numnam_cfg, namdct, IOSTAT = ios, ERR = 902 ) 141 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdct in configuration namelist', lwp ) 142 IF(lwm) WRITE ( numond, namdct ) 128 READ ( numnam_ref, nam_diadct, IOSTAT = ios, ERR = 901) 129 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diadct in reference namelist' ) 130 131 READ ( numnam_cfg, nam_diadct, IOSTAT = ios, ERR = 902 ) 132 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_diadct in configuration namelist' ) 133 IF(lwm) WRITE ( numond, nam_diadct ) 143 134 144 135 IF( lwp ) THEN … … 146 137 WRITE(numout,*) "diadct_init: compute transports through sections " 147 138 WRITE(numout,*) "~~~~~~~~~~~~~~~~~~~~~" 148 WRITE(numout,*) " Frequency of computation: nn_dct = ",nn_dct 149 WRITE(numout,*) " Frequency of write: nn_dctwri = ",nn_dctwri 139 WRITE(numout,*) " Calculate transport thru sections: ln_diadct = ", ln_diadct 140 WRITE(numout,*) " Frequency of computation: nn_dct = ", nn_dct 141 WRITE(numout,*) " Frequency of write: nn_dctwri = ", nn_dctwri 150 142 151 143 IF ( nn_secdebug .GE. 1 .AND. nn_secdebug .LE. nb_sec_max )THEN … … 155 147 ELSE ; WRITE(numout,*)" Wrong value for nn_secdebug : ",nn_secdebug 156 148 ENDIF 157 149 ENDIF 150 151 IF( ln_diadct ) THEN 152 ! control 158 153 IF(nn_dct .GE. nn_dctwri .AND. MOD(nn_dct,nn_dctwri) .NE. 0) & 159 & CALL ctl_stop( 'diadct: nn_dct should be smaller and a multiple of nn_dctwri' ) 160 154 & CALL ctl_stop( 'diadct: nn_dct should be smaller and a multiple of nn_dctwri' ) 155 156 ! allocate dia_dct arrays 157 IF( diadct_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'diadct_alloc: failed to allocate arrays' ) 158 159 !Read section_ijglobal.diadct 160 CALL readsec 161 162 !open output file 163 IF( lwm ) THEN 164 CALL ctl_opn( numdct_vol, 'volume_transport', 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 165 CALL ctl_opn( numdct_heat, 'heat_transport' , 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 166 CALL ctl_opn( numdct_salt, 'salt_transport' , 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 167 ENDIF 168 169 ! Initialise arrays to zero 170 transports_3d(:,:,:,:)=0.0 171 transports_2d(:,:,:) =0.0 172 ! 161 173 ENDIF 162 163 !Read section_ijglobal.diadct164 CALL readsec165 166 !open output file167 IF( lwm ) THEN168 CALL ctl_opn( numdct_vol, 'volume_transport', 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )169 CALL ctl_opn( numdct_heat, 'heat_transport' , 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )170 CALL ctl_opn( numdct_salt, 'salt_transport' , 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )171 ENDIF172 173 ! Initialise arrays to zero174 transports_3d(:,:,:,:)=0.0175 transports_2d(:,:,:) =0.0176 174 ! 177 175 END SUBROUTINE dia_dct_init 178 176 179 177 180 SUBROUTINE dia_dct( kt )178 SUBROUTINE dia_dct( kt, Kmm ) 181 179 !!--------------------------------------------------------------------- 182 180 !! *** ROUTINE diadct *** … … 195 193 !! Reinitialise all relevant arrays to zero 196 194 !!--------------------------------------------------------------------- 197 INTEGER, INTENT(in) :: kt 195 INTEGER, INTENT(in) :: kt ! ocean time step 196 INTEGER, INTENT(in) :: Kmm ! time level index 198 197 ! 199 198 INTEGER :: jsec ! loop on sections … … 235 234 236 235 !Compute transport through section 237 CALL transport( secs(jsec),lldebug,jsec)236 CALL transport(Kmm,secs(jsec),lldebug,jsec) 238 237 239 238 ENDDO … … 249 248 ! Sum over each class 250 249 DO jsec=1,nb_sec 251 CALL dia_dct_sum( secs(jsec),jsec)250 CALL dia_dct_sum(Kmm,secs(jsec),jsec) 252 251 ENDDO 253 252 … … 413 412 ijloc=ijglo-njmpp+1 ! " 414 413 415 !verify if the point is on the local domain:(1, nlei)*(1,nlej)416 IF( iiloc >= 1 .AND. iiloc <= nlei.AND. &417 ijloc >= 1 .AND. ijloc <= nlej)THEN414 !verify if the point is on the local domain:(1,Nie0)*(1,Nje0) 415 IF( iiloc >= 1 .AND. iiloc <= Nie0 .AND. & 416 ijloc >= 1 .AND. ijloc <= Nje0 )THEN 418 417 iptloc = iptloc + 1 ! count local points 419 418 secs(jsec)%listPoint(iptloc) = POINT_SECTION(mi0(iiglo),mj0(ijglo)) ! store local coordinates … … 520 519 521 520 !which coordinate shall we verify ? 522 IF ( cdind=='I' )THEN ; itest= nlei; iind=1523 ELSE IF ( cdind=='J' )THEN ; itest= nlej; iind=2521 IF ( cdind=='I' )THEN ; itest=Nie0 ; iind=1 522 ELSE IF ( cdind=='J' )THEN ; itest=Nje0 ; iind=2 524 523 ELSE ; CALL ctl_stop("removepoints :Wrong value for cdind") 525 524 ENDIF … … 561 560 562 561 563 SUBROUTINE transport( sec,ld_debug,jsec)562 SUBROUTINE transport(Kmm,sec,ld_debug,jsec) 564 563 !!------------------------------------------------------------------------------------------- 565 564 !! *** ROUTINE transport *** … … 581 580 !! 582 581 !!------------------------------------------------------------------------------------------- 582 INTEGER ,INTENT(IN) :: Kmm ! time level index 583 583 TYPE(SECTION),INTENT(INOUT) :: sec 584 584 LOGICAL ,INTENT(IN) :: ld_debug … … 676 676 SELECT CASE( sec%direction(jseg) ) 677 677 CASE(0,1) 678 ztn = interp( k%I,k%J,jk,'V',tsn(:,:,:,jp_tem) )679 zsn = interp( k%I,k%J,jk,'V',tsn(:,:,:,jp_sal) )680 zrhop = interp( k%I,k%J,jk,'V',rhop)681 zrhoi = interp( k%I,k%J,jk,'V',rhd*rau0+rau0)682 zsshn = 0.5*( ssh n(k%I,k%J) + sshn(k%I,k%J+1) ) * vmask(k%I,k%J,1)678 ztn = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_tem,Kmm) ) 679 zsn = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) ) 680 zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop) 681 zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rho0+rho0) 682 zsshn = 0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I,k%J+1,Kmm) ) * vmask(k%I,k%J,1) 683 683 CASE(2,3) 684 ztn = interp( k%I,k%J,jk,'U',tsn(:,:,:,jp_tem) )685 zsn = interp( k%I,k%J,jk,'U',tsn(:,:,:,jp_sal) )686 zrhop = interp( k%I,k%J,jk,'U',rhop)687 zrhoi = interp( k%I,k%J,jk,'U',rhd*rau0+rau0)688 zsshn = 0.5*( ssh n(k%I,k%J) + sshn(k%I+1,k%J) ) * umask(k%I,k%J,1)684 ztn = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_tem,Kmm) ) 685 zsn = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) ) 686 zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop) 687 zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rho0+rho0) 688 zsshn = 0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I+1,k%J,Kmm) ) * umask(k%I,k%J,1) 689 689 END SELECT 690 690 ! 691 zdep= gdept _n(k%I,k%J,jk)691 zdep= gdept(k%I,k%J,jk,Kmm) 692 692 693 693 SELECT CASE( sec%direction(jseg) ) !compute velocity with the correct direction 694 694 CASE(0,1) 695 695 zumid=0._wp 696 zvmid=isgnv*v n(k%I,k%J,jk)*vmask(k%I,k%J,jk)696 zvmid=isgnv*vv(k%I,k%J,jk,Kmm)*vmask(k%I,k%J,jk) 697 697 CASE(2,3) 698 zumid=isgnu*u n(k%I,k%J,jk)*umask(k%I,k%J,jk)698 zumid=isgnu*uu(k%I,k%J,jk,Kmm)*umask(k%I,k%J,jk) 699 699 zvmid=0._wp 700 700 END SELECT … … 702 702 !zTnorm=transport through one cell; 703 703 !velocity* cell's length * cell's thickness 704 zTnorm = zumid*e2u(k%I,k%J) * e3u _n(k%I,k%J,jk) &705 & + zvmid*e1v(k%I,k%J) * e3v _n(k%I,k%J,jk)704 zTnorm = zumid*e2u(k%I,k%J) * e3u(k%I,k%J,jk,Kmm) & 705 & + zvmid*e1v(k%I,k%J) * e3v(k%I,k%J,jk,Kmm) 706 706 707 707 !!gm THIS is WRONG no transport due to ssh in linear free surface case !!!!! … … 768 768 769 769 770 SUBROUTINE dia_dct_sum( sec,jsec)770 SUBROUTINE dia_dct_sum(Kmm,sec,jsec) 771 771 !!------------------------------------------------------------- 772 772 !! Purpose: Average the transport over nn_dctwri time steps … … 787 787 !! 788 788 !!------------------------------------------------------------- 789 INTEGER ,INTENT(IN) :: Kmm ! time level index 789 790 TYPE(SECTION),INTENT(INOUT) :: sec 790 791 INTEGER ,INTENT(IN) :: jsec ! numeric identifier of section … … 848 849 SELECT CASE( sec%direction(jseg) ) 849 850 CASE(0,1) 850 ztn = interp( k%I,k%J,jk,'V',tsn(:,:,:,jp_tem) )851 zsn = interp( k%I,k%J,jk,'V',tsn(:,:,:,jp_sal) )852 zrhop = interp( k%I,k%J,jk,'V',rhop)853 zrhoi = interp( k%I,k%J,jk,'V',rhd*rau0+rau0)851 ztn = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_tem,Kmm) ) 852 zsn = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) ) 853 zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop) 854 zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rho0+rho0) 854 855 855 856 CASE(2,3) 856 ztn = interp( k%I,k%J,jk,'U',tsn(:,:,:,jp_tem) )857 zsn = interp( k%I,k%J,jk,'U',tsn(:,:,:,jp_sal) )858 zrhop = interp( k%I,k%J,jk,'U',rhop)859 zrhoi = interp( k%I,k%J,jk,'U',rhd*rau0+rau0)860 zsshn = 0.5*( ssh n(k%I,k%J) + sshn(k%I+1,k%J) ) * umask(k%I,k%J,1)857 ztn = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_tem,Kmm) ) 858 zsn = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) ) 859 zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop) 860 zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rho0+rho0) 861 zsshn = 0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I+1,k%J,Kmm) ) * umask(k%I,k%J,1) 861 862 END SELECT 862 863 863 zdep= gdept _n(k%I,k%J,jk)864 zdep= gdept(k%I,k%J,jk,Kmm) 864 865 865 866 !------------------------------- … … 1104 1105 1105 1106 1106 FUNCTION interp( ki, kj, kk, cd_point, ptab)1107 FUNCTION interp(Kmm, ki, kj, kk, cd_point, ptab) 1107 1108 !!---------------------------------------------------------------------- 1108 1109 !! … … 1121 1122 !! | | | interpolation between ptab(I,J,K) and ptab(I,J,K+1) 1122 1123 !! | | | zbis = 1123 !! | | | [ e3w (I+1,J,K)*ptab(I,J,K) + ( e3w(I,J,K) - e3w(I+1,J,K) ) * ptab(I,J,K-1) ]1124 !! | | | /[ e3w(I+1,J,K) + e3w(I,J,K) - e3w(I+1,J,K) ]1124 !! | | | [ e3w_n(I+1,J,K,NOW)*ptab(I,J,K) + ( e3w_n(I,J,K,NOW) - e3w_n(I+1,J,K,NOW) ) * ptab(I,J,K-1) ] 1125 !! | | | /[ e3w_n(I+1,J,K,NOW) + e3w_n(I,J,K,NOW) - e3w_n(I+1,J,K,NOW) ] 1125 1126 !! | | | 1126 1127 !! | | | 2. Horizontal interpolation: compute value at U/V point … … 1165 1166 !!---------------------------------------------------------------------- 1166 1167 !*arguments 1168 INTEGER, INTENT(IN) :: Kmm ! time level index 1167 1169 INTEGER, INTENT(IN) :: ki, kj, kk ! coordinate of point 1168 1170 CHARACTER(len=1), INTENT(IN) :: cd_point ! type of point (U, V) … … 1199 1201 IF( ln_sco )THEN ! s-coordinate case 1200 1202 1201 zdepu = ( gdept _n(ii1,ij1,kk) + gdept_n(ii2,ij2,kk) ) * 0.5_wp1202 zdep1 = gdept _n(ii1,ij1,kk) - zdepu1203 zdep2 = gdept _n(ii2,ij2,kk) - zdepu1203 zdepu = ( gdept(ii1,ij1,kk,Kmm) + gdept(ii2,ij2,kk,Kmm) ) * 0.5_wp 1204 zdep1 = gdept(ii1,ij1,kk,Kmm) - zdepu 1205 zdep2 = gdept(ii2,ij2,kk,Kmm) - zdepu 1204 1206 1205 1207 ! weights … … 1213 1215 ELSE ! full step or partial step case 1214 1216 1215 ze3t = e3t_n(ii2,ij2,kk) - e3t_n(ii1,ij1,kk) 1216 zwgt1 = ( e3w_n(ii2,ij2,kk) - e3w_n(ii1,ij1,kk) ) / e3w_n(ii2,ij2,kk) 1217 zwgt2 = ( e3w_n(ii1,ij1,kk) - e3w_n(ii2,ij2,kk) ) / e3w_n(ii1,ij1,kk) 1217 ze3t = e3t(ii2,ij2,kk,Kmm) - e3t(ii1,ij1,kk,Kmm) 1218 zwgt1 = ( e3w(ii2,ij2,kk,Kmm) - e3w(ii1,ij1,kk,Kmm) ) & 1219 & / e3w(ii2,ij2,kk,Kmm) 1220 zwgt2 = ( e3w(ii1,ij1,kk,Kmm) - e3w(ii2,ij2,kk,Kmm) ) & 1221 & / e3w(ii1,ij1,kk,Kmm) 1218 1222 1219 1223 IF(kk .NE. 1)THEN … … 1241 1245 #else 1242 1246 !!---------------------------------------------------------------------- 1243 !! D efault option : Dummy module1247 !! Dummy module 1244 1248 !!---------------------------------------------------------------------- 1245 LOGICAL, PUBLIC, PARAMETER :: lk_diadct = .FALSE. !: diamht flag 1246 PUBLIC 1247 !! $Id$ 1249 LOGICAL, PUBLIC :: ln_diadct = .FALSE. 1248 1250 CONTAINS 1249 1250 SUBROUTINE dia_dct_init ! Dummy routine 1251 SUBROUTINE dia_dct_init 1251 1252 IMPLICIT NONE 1252 WRITE(*,*) 'dia_dct_init: You should not have seen this print! error?'1253 1253 END SUBROUTINE dia_dct_init 1254 1254 1255 SUBROUTINE dia_dct( kt ) ! Dummy routine1255 SUBROUTINE dia_dct( kt, Kmm ) ! Dummy routine 1256 1256 IMPLICIT NONE 1257 1257 INTEGER, INTENT( in ) :: kt ! ocean time-step index 1258 INTEGER, INTENT( in ) :: Kmm ! ocean time level index 1258 1259 WRITE(*,*) 'dia_dct: You should not have seen this print! error?', kt 1259 1260 END SUBROUTINE dia_dct 1261 ! 1260 1262 #endif 1261 1263
Note: See TracChangeset
for help on using the changeset viewer.