- Timestamp:
- 2020-05-14T21:46:00+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Files:
-
- 1 deleted
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Property svn:externals
-
old new 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@HEAD sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/SAS/diawri.F90
r12178 r12928 24 24 !!---------------------------------------------------------------------- 25 25 USE oce ! ocean dynamics and tracers 26 USE abl ! abl variables in case ln_abl = .true. 26 27 USE dom_oce ! ocean space and time domain 27 28 USE zdf_oce ! ocean vertical physics … … 51 52 PUBLIC dia_wri_state 52 53 PUBLIC dia_wri_alloc ! Called by nemogcm module 53 54 #if ! defined key_iomput 55 PUBLIC dia_wri_alloc_abl ! Called by sbcabl module (if ln_abl = .true.) 56 #endif 54 57 INTEGER :: nid_T, nz_T, nh_T, ndim_T, ndim_hT ! grid_T file 55 58 INTEGER :: nid_U, nz_U, nh_U, ndim_U, ndim_hU ! grid_U file 56 59 INTEGER :: nid_V, nz_V, nh_V, ndim_V, ndim_hV ! grid_V file 60 INTEGER :: ndim_A, ndim_hA ! ABL file 61 INTEGER :: nid_A, nz_A, nh_A ! grid_ABL file 57 62 INTEGER :: ndex(1) ! ??? 58 63 INTEGER, SAVE, ALLOCATABLE, DIMENSION(:) :: ndex_hT, ndex_hU, ndex_hV 59 60 !! * Substitutions 61 # include "vectopt_loop_substitute.h90" 64 INTEGER, SAVE, ALLOCATABLE, DIMENSION(:) :: ndex_hA, ndex_A ! ABL 65 62 66 !!---------------------------------------------------------------------- 63 67 !! NEMO/SAS 4.0 , NEMO Consortium (2018) … … 78 82 79 83 80 SUBROUTINE dia_wri( kt )84 SUBROUTINE dia_wri( kt, Kmm ) 81 85 !!--------------------------------------------------------------------- 82 86 !! *** ROUTINE dia_wri *** … … 90 94 !! 91 95 INTEGER, INTENT( in ) :: kt ! ocean time-step index 96 INTEGER, INTENT( in ) :: Kmm ! ocean time levelindex 92 97 !!---------------------------------------------------------------------- 93 98 ! 94 99 ! Output the initial state and forcings 95 100 IF( ninist == 1 ) THEN 96 CALL dia_wri_state( 'output.init' )101 CALL dia_wri_state( Kmm, 'output.init' ) 97 102 ninist = 0 98 103 ENDIF … … 114 119 END FUNCTION dia_wri_alloc 115 120 121 INTEGER FUNCTION dia_wri_alloc_abl() 122 !!---------------------------------------------------------------------- 123 ALLOCATE( ndex_hA(jpi*jpj), ndex_A (jpi*jpj*jpkam1), STAT=dia_wri_alloc_abl) 124 CALL mpp_sum( 'diawri', dia_wri_alloc_abl ) 125 ! 126 END FUNCTION dia_wri_alloc_abl 116 127 117 SUBROUTINE dia_wri( kt )128 SUBROUTINE dia_wri( kt, Kmm ) 118 129 !!--------------------------------------------------------------------- 119 130 !! *** ROUTINE dia_wri *** … … 129 140 !! 130 141 INTEGER, INTENT( in ) :: kt ! ocean time-step index 142 INTEGER, INTENT( in ) :: Kmm ! ocean time level index 131 143 !! 132 144 LOGICAL :: ll_print = .FALSE. ! =T print and flush numout … … 136 148 INTEGER :: ierr ! error code return from allocation 137 149 INTEGER :: iimi, iima, ipk, it, itmod, ijmi, ijma ! local integers 150 INTEGER :: ipka ! ABL 138 151 REAL(wp) :: zsto, zout, zmax, zjulian ! local scalars 152 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zw3d_abl ! ABL 3D workspace 139 153 !!---------------------------------------------------------------------- 140 154 ! 141 155 ! Output the initial state and forcings 142 156 IF( ninist == 1 ) THEN 143 CALL dia_wri_state( 'output.init' )157 CALL dia_wri_state( Kmm, 'output.init' ) 144 158 ninist = 0 145 159 ENDIF … … 161 175 ENDIF 162 176 #if defined key_diainstant 163 zsto = nn_write * r dt177 zsto = nn_write * rn_Dt 164 178 clop = "inst("//TRIM(clop)//")" 165 179 #else 166 zsto=r dt180 zsto=rn_Dt 167 181 clop = "ave("//TRIM(clop)//")" 168 182 #endif 169 zout = nn_write * r dt170 zmax = ( nitend - nit000 + 1 ) * r dt183 zout = nn_write * rn_Dt 184 zmax = ( nitend - nit000 + 1 ) * rn_Dt 171 185 172 186 ! Define indices of the horizontal output zoom and vertical limit storage … … 174 188 ijmi = 1 ; ijma = jpj 175 189 ipk = jpk 190 IF(ln_abl) ipka = jpkam1 176 191 177 192 ! define time axis … … 188 203 189 204 ! Compute julian date from starting date of the run 190 CALL ymds2ju( nyear, nmonth, nday, r dt, zjulian )205 CALL ymds2ju( nyear, nmonth, nday, rn_Dt, zjulian ) 191 206 zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment 192 207 IF(lwp)WRITE(numout,*) … … 210 225 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & ! Horizontal grid: glamt and gphit 211 226 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 212 & nit000-1, zjulian, r dt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set )227 & nit000-1, zjulian, rn_Dt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 213 228 CALL histvert( nid_T, "deptht", "Vertical T levels", & ! Vertical grid: gdept 214 229 & "m", ipk, gdept_1d, nz_T, "down" ) … … 222 237 CALL histbeg( clhstnam, jpi, glamu, jpj, gphiu, & ! Horizontal grid: glamu and gphiu 223 238 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 224 & nit000-1, zjulian, r dt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set )239 & nit000-1, zjulian, rn_Dt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 225 240 CALL histvert( nid_U, "depthu", "Vertical U levels", & ! Vertical grid: gdept 226 241 & "m", ipk, gdept_1d, nz_U, "down" ) … … 234 249 CALL histbeg( clhstnam, jpi, glamv, jpj, gphiv, & ! Horizontal grid: glamv and gphiv 235 250 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 236 & nit000-1, zjulian, r dt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set )251 & nit000-1, zjulian, rn_Dt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 237 252 CALL histvert( nid_V, "depthv", "Vertical V levels", & ! Vertical grid : gdept 238 253 & "m", ipk, gdept_1d, nz_V, "down" ) … … 241 256 242 257 ! No W grid FILE 258 IF( ln_abl ) THEN 259 ! Define the ABL grid FILE ( nid_A ) 260 CALL dia_nam( clhstnam, nn_write, 'grid_ABL' ) 261 IF(lwp) WRITE(numout,*) " Name of NETCDF file ", clhstnam ! filename 262 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & ! Horizontal grid: glamt and gphit 263 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 264 & nit000-1, zjulian, rn_Dt, nh_A, nid_A, domain_id=nidom, snc4chunks=snc4set ) 265 CALL histvert( nid_A, "ght_abl", "Vertical T levels", & ! Vertical grid: gdept 266 & "m", ipka, ght_abl(2:jpka), nz_A, "up" ) 267 ! ! Index of ocean points 268 ALLOCATE( zw3d_abl(jpi,jpj,ipka) ) 269 zw3d_abl(:,:,:) = 1._wp 270 CALL wheneq( jpi*jpj*ipka, zw3d_abl, 1, 1., ndex_A , ndim_A ) ! volume 271 CALL wheneq( jpi*jpj , zw3d_abl, 1, 1., ndex_hA, ndim_hA ) ! surface 272 DEALLOCATE(zw3d_abl) 273 ENDIF 243 274 244 275 ! Declare all the output fields as NETCDF variables … … 261 292 CALL histdef( nid_T, "sowindsp", "wind speed at 10m" , "m/s" , & ! wndm 262 293 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 294 ! 295 IF( ln_abl ) THEN 296 ! !!! nid_A : 3D 297 CALL histdef( nid_A, "t_abl", "Potential Temperature" , "K" , & ! t_abl 298 & jpi, jpj, nh_A, ipka, 1, ipka, nz_A, 32, clop, zsto, zout ) 299 CALL histdef( nid_A, "q_abl", "Humidity" , "kg/kg" , & ! q_abl 300 & jpi, jpj, nh_A, ipka, 1, ipka, nz_A, 32, clop, zsto, zout ) 301 CALL histdef( nid_A, "u_abl", "Atmospheric U-wind " , "m/s" , & ! u_abl 302 & jpi, jpj, nh_A, ipka, 1, ipka, nz_A, 32, clop, zsto, zout ) 303 CALL histdef( nid_A, "v_abl", "Atmospheric V-wind " , "m/s" , & ! v_abl 304 & jpi, jpj, nh_A, ipka, 1, ipka, nz_A, 32, clop, zsto, zout ) 305 CALL histdef( nid_A, "tke_abl", "Atmospheric TKE " , "m2/s2" , & ! tke_abl 306 & jpi, jpj, nh_A, ipka, 1, ipka, nz_A, 32, clop, zsto, zout ) 307 CALL histdef( nid_A, "avm_abl", "Atmospheric turbulent viscosity", "m2/s" , & ! avm_abl 308 & jpi, jpj, nh_A, ipka, 1, ipka, nz_A, 32, clop, zsto, zout ) 309 CALL histdef( nid_A, "avt_abl", "Atmospheric turbulent diffusivity", "m2/s2", & ! avt_abl 310 & jpi, jpj, nh_A, ipka, 1, ipka, nz_A, 32, clop, zsto, zout ) 311 CALL histdef( nid_A, "pblh", "Atmospheric boundary layer height " , "m", & ! pblh 312 & jpi, jpj, nh_A, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 313 #if defined key_si3 314 CALL histdef( nid_A, "oce_frac", "Fraction of open ocean" , " ", & ! ato_i 315 & jpi, jpj, nh_A, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 316 #endif 317 CALL histend( nid_A, snc4chunks=snc4set ) 318 ! 319 ENDIF 320 ! 263 321 264 322 CALL histend( nid_T, snc4chunks=snc4set ) … … 310 368 CALL histwrite( nid_T, "soicecov", it, fr_i , ndim_hT, ndex_hT ) ! ice fraction 311 369 CALL histwrite( nid_T, "sowindsp", it, wndm , ndim_hT, ndex_hT ) ! wind speed 370 ! 371 IF( ln_abl ) THEN 372 ALLOCATE( zw3d_abl(jpi,jpj,jpka) ) 373 IF( ln_mskland ) THEN 374 DO jk=1,jpka 375 zw3d_abl(:,:,jk) = tmask(:,:,1) 376 END DO 377 ELSE 378 zw3d_abl(:,:,:) = 1._wp 379 ENDIF 380 CALL histwrite( nid_A, "pblh" , it, pblh(:,:) *zw3d_abl(:,:,1 ), ndim_hA, ndex_hA ) ! pblh 381 CALL histwrite( nid_A, "u_abl" , it, u_abl (:,:,2:jpka,nt_n )*zw3d_abl(:,:,2:jpka), ndim_A , ndex_A ) ! u_abl 382 CALL histwrite( nid_A, "v_abl" , it, v_abl (:,:,2:jpka,nt_n )*zw3d_abl(:,:,2:jpka), ndim_A , ndex_A ) ! v_abl 383 CALL histwrite( nid_A, "t_abl" , it, tq_abl (:,:,2:jpka,nt_n,1)*zw3d_abl(:,:,2:jpka), ndim_A , ndex_A ) ! t_abl 384 CALL histwrite( nid_A, "q_abl" , it, tq_abl (:,:,2:jpka,nt_n,2)*zw3d_abl(:,:,2:jpka), ndim_A , ndex_A ) ! q_abl 385 CALL histwrite( nid_A, "tke_abl", it, tke_abl (:,:,2:jpka,nt_n )*zw3d_abl(:,:,2:jpka), ndim_A , ndex_A ) ! tke_abl 386 CALL histwrite( nid_A, "avm_abl", it, avm_abl (:,:,2:jpka )*zw3d_abl(:,:,2:jpka), ndim_A , ndex_A ) ! avm_abl 387 CALL histwrite( nid_A, "avt_abl", it, avt_abl (:,:,2:jpka )*zw3d_abl(:,:,2:jpka), ndim_A , ndex_A ) ! avt_abl 388 #if defined key_si3 389 CALL histwrite( nid_A, "oce_frac" , it, ato_i(:,:) , ndim_hA, ndex_hA ) ! ato_i 390 #endif 391 DEALLOCATE(zw3d_abl) 392 ENDIF 393 ! 312 394 313 395 ! Write fields on U grid … … 325 407 CALL histclo( nid_U ) 326 408 CALL histclo( nid_V ) 409 IF(ln_abl) CALL histclo( nid_A ) 327 410 ENDIF 328 411 ! … … 332 415 #endif 333 416 334 SUBROUTINE dia_wri_state( cdfile_name )417 SUBROUTINE dia_wri_state( Kmm, cdfile_name ) 335 418 !!--------------------------------------------------------------------- 336 419 !! *** ROUTINE dia_wri_state *** … … 345 428 !! File 'output.abort.nc' is created in case of abnormal job end 346 429 !!---------------------------------------------------------------------- 430 INTEGER , INTENT( in ) :: Kmm ! ocean time levelindex 347 431 CHARACTER (len=* ), INTENT( in ) :: cdfile_name ! name of the file created 348 432 !! … … 354 438 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~ and forcing fields file created ' 355 439 IF(lwp) WRITE(numout,*) ' and named :', cdfile_name, '...nc' 356 357 #if defined key_si3 358 CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE., kdlev = jpl ) 359 #else 360 CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE. ) 361 #endif 362 363 CALL iom_rstput( 0, 0, inum, 'votemper', tsn(:,:,:,jp_tem) ) ! now temperature 364 CALL iom_rstput( 0, 0, inum, 'vosaline', tsn(:,:,:,jp_sal) ) ! now salinity 365 CALL iom_rstput( 0, 0, inum, 'sossheig', sshn ) ! sea surface height 366 CALL iom_rstput( 0, 0, inum, 'vozocrtx', un ) ! now i-velocity 367 CALL iom_rstput( 0, 0, inum, 'vomecrty', vn ) ! now j-velocity 368 CALL iom_rstput( 0, 0, inum, 'vovecrtz', wn ) ! now k-velocity 369 CALL iom_rstput( 0, 0, inum, 'sowaflup', emp - rnf ) ! freshwater budget 370 CALL iom_rstput( 0, 0, inum, 'sohefldo', qsr + qns ) ! total heat flux 371 CALL iom_rstput( 0, 0, inum, 'soshfldo', qsr ) ! solar heat flux 372 CALL iom_rstput( 0, 0, inum, 'soicecov', fr_i ) ! ice fraction 373 CALL iom_rstput( 0, 0, inum, 'sozotaux', utau ) ! i-wind stress 374 CALL iom_rstput( 0, 0, inum, 'sometauy', vtau ) ! j-wind stress 375 440 ! 441 CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE. ) 442 ! 443 CALL iom_rstput( 0, 0, inum, 'votemper', ts (:,:,:,jp_tem,Kmm) ) ! now temperature 444 CALL iom_rstput( 0, 0, inum, 'vosaline', ts (:,:,:,jp_sal,Kmm) ) ! now salinity 445 CALL iom_rstput( 0, 0, inum, 'sossheig', ssh(:,:, Kmm) ) ! sea surface height 446 CALL iom_rstput( 0, 0, inum, 'vozocrtx', uu (:,:,:, Kmm) ) ! now i-velocity 447 CALL iom_rstput( 0, 0, inum, 'vomecrty', vv (:,:,:, Kmm) ) ! now j-velocity 448 CALL iom_rstput( 0, 0, inum, 'vovecrtz', ww ) ! now k-velocity 449 CALL iom_rstput( 0, 0, inum, 'sowaflup', emp - rnf ) ! freshwater budget 450 CALL iom_rstput( 0, 0, inum, 'sohefldo', qsr + qns ) ! total heat flux 451 CALL iom_rstput( 0, 0, inum, 'soshfldo', qsr ) ! solar heat flux 452 CALL iom_rstput( 0, 0, inum, 'soicecov', fr_i ) ! ice fraction 453 CALL iom_rstput( 0, 0, inum, 'sozotaux', utau ) ! i-wind stress 454 CALL iom_rstput( 0, 0, inum, 'sometauy', vtau ) ! j-wind stress 455 ! 456 CALL iom_close( inum ) 457 ! 376 458 #if defined key_si3 377 459 IF( nn_ice == 2 ) THEN ! condition needed in case agrif + ice-model but no-ice in child grid 460 CALL iom_open( TRIM(cdfile_name)//'_ice', inum, ldwrt = .TRUE., kdlev = jpl, cdcomp = 'ICE' ) 378 461 CALL ice_wri_state( inum ) 379 ENDIF 380 #endif 381 ! 382 CALL iom_close( inum ) 383 ! 462 CALL iom_close( inum ) 463 ENDIF 464 #endif 465 384 466 END SUBROUTINE dia_wri_state 385 467 -
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/SAS/nemogcm.F90
r12178 r12928 32 32 USE bdyini ! open boundary cond. setting (bdy_init routine). mandatory for sea-ice 33 33 USE bdydta ! open boundary cond. setting (bdy_dta_init routine). mandatory for sea-ice 34 USE diu_layers ! diurnal bulk SST and coolskin 35 USE step_diu ! diurnal bulk SST timestepping (called from here if run offline) 34 36 ! 37 USE in_out_manager ! I/O manager 35 38 USE lib_mpp ! distributed memory computing 36 39 USE mppini ! shared/distributed memory setting (mpp_init routine) … … 52 55 CHARACTER(lc) :: cform_aaa="( /, 'AAAAAAAA', / ) " ! flag for output listing 53 56 57 #if defined key_mpp_mpi 58 INCLUDE 'mpif.h' 59 #endif 60 54 61 !!---------------------------------------------------------------------- 55 62 !! NEMO/SAS 4.0 , NEMO Consortium (2018) … … 83 90 ! !-----------------------! 84 91 #if defined key_agrif 92 Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs ! agrif_oce module copies of time level indices 85 93 CALL Agrif_Declare_Var_dom ! AGRIF: set the meshes for DOM 86 94 CALL Agrif_Declare_Var ! " " " " " DYN/TRA … … 109 117 #if defined key_si3 110 118 ! Recursive update from highest nested level to lowest: 119 Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs ! agrif_oce module copies of time level indices 111 120 CALL Agrif_step_child_adj(Agrif_update_ice) 112 121 #endif … … 128 137 ! 129 138 DO WHILE( istp <= nitend .AND. nstop == 0 ) 139 #if defined key_mpp_mpi 140 ncom_stp = istp 141 IF ( istp == ( nit000 + 1 ) ) elapsed_time = MPI_Wtime() 142 IF ( istp == nitend ) elapsed_time = MPI_Wtime() - elapsed_time 143 #endif 130 144 CALL stp ( istp ) 131 145 istp = istp + 1 … … 185 199 INTEGER :: ios, ilocal_comm ! local integers 186 200 !! 187 NAMELIST/namctl/ ln_ctl , sn_cfctl, nn_print, nn_ictls, nn_ictle,&201 NAMELIST/namctl/ sn_cfctl, nn_print, nn_ictls, nn_ictle, & 188 202 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, & 189 203 & ln_timing, ln_diacfl … … 230 244 ! open ocean.output as soon as possible to get all output prints (including errors messages) 231 245 IF( lk_oasis ) THEN 232 IF( lwm ) CALL ctl_opn( numout, 'sas.output', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE. )246 IF( lwm ) CALL ctl_opn( numout, 'sas.output', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE. ) 233 247 ! open reference and configuration namelist files 234 CALL ctl_opn( numnam_ref, 'namelist_sas_ref', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE.)235 CALL ctl_opn( numnam_cfg, 'namelist_sas_cfg', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE.)236 IF( lwm ) CALL ctl_opn( numond, 'output.namelist_sas.dyn', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE. )248 CALL load_nml( numnam_ref, 'namelist_sas_ref', -1, lwm ) 249 CALL load_nml( numnam_cfg, 'namelist_sas_cfg', -1, lwm ) 250 IF( lwm ) CALL ctl_opn( numond, 'output.namelist_sas.dyn', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE. ) 237 251 ELSE 238 IF( lwm ) CALL ctl_opn( numout, 'ocean.output', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE. )252 IF( lwm ) CALL ctl_opn( numout, 'ocean.output', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE. ) 239 253 ! open reference and configuration namelist files 240 CALL ctl_opn( numnam_ref, 'namelist_ref', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE.)241 CALL ctl_opn( numnam_cfg, 'namelist_cfg', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE.)242 IF( lwm ) CALL ctl_opn( numond, 'output.namelist.dyn', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE. )254 CALL load_nml( numnam_ref, 'namelist_ref', -1, lwm ) 255 CALL load_nml( numnam_cfg, 'namelist_cfg', -1, lwm ) 256 IF( lwm ) CALL ctl_opn( numond, 'output.namelist.dyn', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE. ) 243 257 ENDIF 244 258 ! open /dev/null file to be able to supress output write easily 259 IF( Agrif_Root() ) THEN 245 260 CALL ctl_opn( numnul, '/dev/null', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, -1, .FALSE. ) 261 #ifdef key_agrif 262 ELSE 263 numnul = Agrif_Parent(numnul) 264 #endif 265 ENDIF 246 266 ! 247 267 ! !--------------------! 248 ! ! Open listing units ! -> need ln_ctl from namctl to define lwp268 ! ! Open listing units ! -> need sn_cfctl from namctl to define lwp 249 269 ! !--------------------! 250 270 ! 251 REWIND( numnam_ref ) ! Namelist namctl in reference namelist252 271 READ ( numnam_ref, namctl, IOSTAT = ios, ERR = 901 ) 253 272 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in reference namelist' ) 254 REWIND( numnam_cfg ) ! Namelist namctl in confguration namelist255 273 READ ( numnam_cfg, namctl, IOSTAT = ios, ERR = 902 ) 256 274 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namctl in configuration namelist' ) 257 275 ! 258 lwp = (narea == 1) .OR. ln_ctl ! control of all listing output print 276 ! finalize the definition of namctl variables 277 IF( sn_cfctl%l_allon ) THEN 278 ! Turn on all options. 279 CALL nemo_set_cfctl( sn_cfctl, .TRUE., .TRUE. ) 280 ! Ensure all processors are active 281 sn_cfctl%procmin = 0 ; sn_cfctl%procmax = 1000000 ; sn_cfctl%procincr = 1 282 ELSEIF( sn_cfctl%l_config ) THEN 283 ! Activate finer control of report outputs 284 ! optionally switch off output from selected areas (note this only 285 ! applies to output which does not involve global communications) 286 IF( ( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax ) .OR. & 287 & ( MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) ) & 288 & CALL nemo_set_cfctl( sn_cfctl, .FALSE., .FALSE. ) 289 ELSE 290 ! turn off all options. 291 CALL nemo_set_cfctl( sn_cfctl, .FALSE., .TRUE. ) 292 ENDIF 293 ! 294 lwp = (narea == 1) .OR. sn_cfctl%l_oceout ! control of all listing output print 259 295 ! 260 296 IF(lwp) THEN ! open listing units … … 291 327 ! 292 328 ENDIF 293 !294 ! finalize the definition of namctl variables295 IF( sn_cfctl%l_config ) THEN296 ! Activate finer control of report outputs297 ! optionally switch off output from selected areas (note this only298 ! applies to output which does not involve global communications)299 IF( ( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax ) .OR. &300 & ( MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) ) &301 & CALL nemo_set_cfctl( sn_cfctl, .FALSE., .FALSE. )302 ELSE303 ! Use ln_ctl to turn on or off all options.304 CALL nemo_set_cfctl( sn_cfctl, ln_ctl, .TRUE. )305 ENDIF306 329 ! 307 330 IF(lwm) WRITE( numond, namctl ) … … 311 334 ! !------------------------------------! 312 335 ! 313 REWIND( numnam_ref ) ! Namelist namcfg in reference namelist314 336 READ ( numnam_ref, namcfg, IOSTAT = ios, ERR = 903 ) 315 337 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in reference namelist' ) 316 REWIND( numnam_cfg ) ! Namelist namcfg in confguration namelist317 338 READ ( numnam_cfg, namcfg, IOSTAT = ios, ERR = 904 ) 318 339 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namcfg in configuration namelist' ) … … 334 355 CALL nemo_alloc() 335 356 357 ! Initialise time level indices 358 Nbb = 1; Nnn = 2; Naa = 3; Nrhs = Naa 359 336 360 ! !-------------------------------! 337 361 ! ! NEMO general initialization ! … … 346 370 CALL phy_cst ! Physical constants 347 371 CALL eos_init ! Equation of seawater 348 CALL dom_init('SAS') ! Domain 349 IF( ln_ctl ) CALL prt_ctl_init ! Print control 372 CALL dom_init( Nbb, Nnn, Naa, 'SAS') ! Domain 373 IF( sn_cfctl%l_prtctl ) & 374 & CALL prt_ctl_init ! Print control 350 375 351 376 CALL day_init ! model calendar (using both namelist and restart infos) … … 353 378 354 379 ! ! external forcing 355 CALL sbc_init 380 CALL sbc_init( Nbb, Nnn, Naa ) ! Forcings : surface module 356 381 357 382 ! ==> clem: open boundaries init. is mandatory for sea-ice because ice BDY is not decoupled from … … 360 385 CALL bdy_init 361 386 ! ==> 362 CALL icb_init( r dt, nit000) ! initialise icebergs instance387 CALL icb_init( rn_Dt, nit000) ! initialise icebergs instance 363 388 ! 364 389 IF(lwp) WRITE(numout,cform_aaa) ! Flag AAAAAAA … … 375 400 !! ** Purpose : control print setting 376 401 !! 377 !! ** Method : - print namctl information and check some consistencies402 !! ** Method : - print namctl and namcfg information and check some consistencies 378 403 !!---------------------------------------------------------------------- 379 404 ! … … 383 408 WRITE(numout,*) '~~~~~~~~' 384 409 WRITE(numout,*) ' Namelist namctl' 385 WRITE(numout,*) ' run control (for debugging) ln_ctl = ', ln_ctl 410 WRITE(numout,*) ' sn_cfctl%l_glochk = ', sn_cfctl%l_glochk 411 WRITE(numout,*) ' sn_cfctl%l_allon = ', sn_cfctl%l_allon 386 412 WRITE(numout,*) ' finer control over o/p sn_cfctl%l_config = ', sn_cfctl%l_config 387 413 WRITE(numout,*) ' sn_cfctl%l_runstat = ', sn_cfctl%l_runstat … … 389 415 WRITE(numout,*) ' sn_cfctl%l_oceout = ', sn_cfctl%l_oceout 390 416 WRITE(numout,*) ' sn_cfctl%l_layout = ', sn_cfctl%l_layout 391 WRITE(numout,*) ' sn_cfctl%l_mppout = ', sn_cfctl%l_mppout 392 WRITE(numout,*) ' sn_cfctl%l_mpptop = ', sn_cfctl%l_mpptop 417 WRITE(numout,*) ' sn_cfctl%l_prtctl = ', sn_cfctl%l_prtctl 418 WRITE(numout,*) ' sn_cfctl%l_prttrc = ', sn_cfctl%l_prttrc 419 WRITE(numout,*) ' sn_cfctl%l_oasout = ', sn_cfctl%l_oasout 393 420 WRITE(numout,*) ' sn_cfctl%procmin = ', sn_cfctl%procmin 394 421 WRITE(numout,*) ' sn_cfctl%procmax = ', sn_cfctl%procmax … … 428 455 ! ! Parameter control 429 456 ! 430 IF( ln_ctl ) THEN! sub-domain area indices for the control prints457 IF( sn_cfctl%l_prtctl .OR. sn_cfctl%l_prttrc ) THEN ! sub-domain area indices for the control prints 431 458 IF( lk_mpp .AND. jpnij > 1 ) THEN 432 459 isplt = jpni ; jsplt = jpnj ; ijsplt = jpni*jpnj ! the domain is forced to the real split domain … … 489 516 IF( numstp /= -1 ) CLOSE( numstp ) ! time-step file 490 517 IF( numrun /= -1 ) CLOSE( numrun ) ! run statistics file 491 IF( numnam_ref /= -1 ) CLOSE( numnam_ref ) ! oce reference namelist492 IF( numnam_cfg /= -1 ) CLOSE( numnam_cfg ) ! oce configuration namelist493 518 IF( lwm.AND.numond /= -1 ) CLOSE( numond ) ! oce output namelist 494 IF( numnam_ice_ref /= -1 ) CLOSE( numnam_ice_ref ) ! ice reference namelist495 IF( numnam_ice_cfg /= -1 ) CLOSE( numnam_ice_cfg ) ! ice configuration namelist496 519 IF( lwm.AND.numoni /= -1 ) CLOSE( numoni ) ! ice output namelist 497 520 IF( numevo_ice /= -1 ) CLOSE( numevo_ice ) ! ice variables (temp. evolution) … … 552 575 sn_cfctl%l_oceout = setto 553 576 sn_cfctl%l_layout = setto 554 sn_cfctl%l_mppout = setto 555 sn_cfctl%l_mpptop = setto 577 sn_cfctl%l_prtctl = setto 578 sn_cfctl%l_prttrc = setto 579 sn_cfctl%l_oasout = setto 556 580 END SUBROUTINE nemo_set_cfctl 557 581 -
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/SAS/sbcssm.F90
r12178 r12928 26 26 USE lib_mpp ! distributed memory computing library 27 27 USE prtctl ! print control 28 USE fldread ! read input fields 28 USE fldread ! read input fields 29 29 USE timing ! Timing 30 30 … … 38 38 LOGICAL :: ln_3d_uve ! specify whether input velocity data is 3D 39 39 LOGICAL :: ln_read_frq ! specify whether we must read frq or not 40 40 41 41 LOGICAL :: l_sasread ! Ice intilisation: =T read a file ; =F anaytical initilaistion 42 42 LOGICAL :: l_initdone = .false. … … 62 62 CONTAINS 63 63 64 SUBROUTINE sbc_ssm( kt )64 SUBROUTINE sbc_ssm( kt, Kbb, Kmm ) 65 65 !!---------------------------------------------------------------------- 66 66 !! *** ROUTINE sbc_ssm *** … … 69 69 !! for an off-line simulation using surface processes only 70 70 !! 71 !! ** Method : calculates the position of data 71 !! ** Method : calculates the position of data 72 72 !! - interpolates data if needed 73 73 !!---------------------------------------------------------------------- 74 74 INTEGER, INTENT(in) :: kt ! ocean time-step index 75 INTEGER, INTENT(in) :: Kbb, Kmm ! ocean time level indices 76 ! (not needed for SAS but needed to keep a consistent interface in sbcmod.F90) 75 77 ! 76 78 INTEGER :: ji, jj ! dummy loop indices … … 80 82 ! 81 83 IF( ln_timing ) CALL timing_start( 'sbc_ssm') 82 84 83 85 IF ( l_sasread ) THEN 84 86 IF( nfld_3d > 0 ) CALL fld_read( kt, 1, sf_ssm_3d ) !== read data at kt time step ==! 85 87 IF( nfld_2d > 0 ) CALL fld_read( kt, 1, sf_ssm_2d ) !== read data at kt time step ==! 86 ! 88 ! 87 89 IF( ln_3d_uve ) THEN 88 90 IF( .NOT. ln_linssh ) THEN 89 e3t_m(:,:) = sf_ssm_3d(jf_e3t)%fnow(:,:,1) * tmask(:,:,1) ! vertical scale factor 91 e3t_m(:,:) = sf_ssm_3d(jf_e3t)%fnow(:,:,1) * tmask(:,:,1) ! vertical scale factor 90 92 ELSE 91 93 e3t_m(:,:) = e3t_0(:,:,1) ! vertical scale factor 92 94 ENDIF 93 95 ssu_m(:,:) = sf_ssm_3d(jf_usp)%fnow(:,:,1) * umask(:,:,1) ! u-velocity 94 ssv_m(:,:) = sf_ssm_3d(jf_vsp)%fnow(:,:,1) * vmask(:,:,1) ! v-velocity 96 ssv_m(:,:) = sf_ssm_3d(jf_vsp)%fnow(:,:,1) * vmask(:,:,1) ! v-velocity 95 97 ELSE 96 98 IF( .NOT. ln_linssh ) THEN 97 e3t_m(:,:) = sf_ssm_2d(jf_e3t)%fnow(:,:,1) * tmask(:,:,1) ! vertical scale factor 99 e3t_m(:,:) = sf_ssm_2d(jf_e3t)%fnow(:,:,1) * tmask(:,:,1) ! vertical scale factor 98 100 ELSE 99 101 e3t_m(:,:) = e3t_0(:,:,1) ! vertical scale factor 100 102 ENDIF 101 103 ssu_m(:,:) = sf_ssm_2d(jf_usp)%fnow(:,:,1) * umask(:,:,1) ! u-velocity 102 ssv_m(:,:) = sf_ssm_2d(jf_vsp)%fnow(:,:,1) * vmask(:,:,1) ! v-velocity 104 ssv_m(:,:) = sf_ssm_2d(jf_vsp)%fnow(:,:,1) * vmask(:,:,1) ! v-velocity 103 105 ENDIF 104 106 ! … … 119 121 IF( .NOT. ln_linssh ) e3t_m(:,:) = e3t_0(:,:,1) !clem: necessary at least for sas2D 120 122 frq_m(:,:) = 1._wp ! - - 121 ssh n (:,:) = 0._wp ! - -122 ENDIF 123 123 ssh (:,:,Kmm) = 0._wp ! - - 124 ENDIF 125 124 126 IF ( nn_ice == 1 ) THEN 125 ts n(:,:,1,jp_tem) = sst_m(:,:)126 ts n(:,:,1,jp_sal) = sss_m(:,:)127 ts b(:,:,1,jp_tem) = sst_m(:,:)128 ts b(:,:,1,jp_sal) = sss_m(:,:)129 ENDIF 130 u b (:,:,1) = ssu_m(:,:)131 v b (:,:,1) = ssv_m(:,:)132 133 IF( ln_ctl) THEN! print control127 ts(:,:,1,jp_tem,Kmm) = sst_m(:,:) 128 ts(:,:,1,jp_sal,Kmm) = sss_m(:,:) 129 ts(:,:,1,jp_tem,Kbb) = sst_m(:,:) 130 ts(:,:,1,jp_sal,Kbb) = sss_m(:,:) 131 ENDIF 132 uu (:,:,1,Kbb) = ssu_m(:,:) 133 vv (:,:,1,Kbb) = ssv_m(:,:) 134 135 IF(sn_cfctl%l_prtctl) THEN ! print control 134 136 CALL prt_ctl(tab2d_1=sst_m, clinfo1=' sst_m - : ', mask1=tmask ) 135 137 CALL prt_ctl(tab2d_1=sss_m, clinfo1=' sss_m - : ', mask1=tmask ) … … 156 158 157 159 158 SUBROUTINE sbc_ssm_init 160 SUBROUTINE sbc_ssm_init( Kbb, Kmm ) 159 161 !!---------------------------------------------------------------------- 160 162 !! *** ROUTINE sbc_ssm_init *** 161 163 !! 162 !! ** Purpose : Initialisation of sea surface mean data 163 !!---------------------------------------------------------------------- 164 !! ** Purpose : Initialisation of sea surface mean data 165 !!---------------------------------------------------------------------- 166 INTEGER, INTENT(in) :: Kbb, Kmm ! ocean time level indices 167 ! (not needed for SAS but needed to keep a consistent interface in sbcmod.F90) 164 168 INTEGER :: ierr, ierr0, ierr1, ierr2, ierr3 ! return error code 165 169 INTEGER :: ifpr ! dummy loop indice … … 186 190 ENDIF 187 191 ! 188 REWIND( numnam_ref ) ! Namelist namsbc_sas in reference namelist : Input fields189 192 READ ( numnam_ref, namsbc_sas, IOSTAT = ios, ERR = 901) 190 193 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_sas in reference namelist' ) 191 REWIND( numnam_cfg ) ! Namelist namsbc_sas in configuration namelist : Input fields192 194 READ ( numnam_cfg, namsbc_sas, IOSTAT = ios, ERR = 902 ) 193 195 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc_sas in configuration namelist' ) 194 196 IF(lwm) WRITE ( numond, namsbc_sas ) 195 ! 197 ! 196 198 IF(lwp) THEN ! Control print 197 199 WRITE(numout,*) ' Namelist namsbc_sas' 198 WRITE(numout,*) ' Initialisation using an input file l_sasread = ', l_sasread 200 WRITE(numout,*) ' Initialisation using an input file l_sasread = ', l_sasread 199 201 WRITE(numout,*) ' Are we supplying a 3D u,v and e3 field ln_3d_uve = ', ln_3d_uve 200 202 WRITE(numout,*) ' Are we reading frq (fraction of qsr absorbed in the 1st T level) ln_read_frq = ', ln_read_frq … … 224 226 ln_closea = .false. 225 227 ENDIF 226 227 ! 228 229 ! 228 230 IF( l_sasread ) THEN ! store namelist information in an array 229 ! 231 ! 230 232 !! following code is a bit messy, but distinguishes between when u,v are 3d arrays and 231 233 !! when we have other 3d arrays that we need to read in … … 273 275 ENDIF 274 276 ! 275 ierr1 = 0 ! default definition if slf_?d(ifpr)%ln_tint = .false. 277 ierr1 = 0 ! default definition if slf_?d(ifpr)%ln_tint = .false. 276 278 IF( nfld_3d > 0 ) THEN 277 279 ALLOCATE( sf_ssm_3d(nfld_3d), STAT=ierr ) ! set sf structure … … 280 282 ENDIF 281 283 DO ifpr = 1, nfld_3d 282 284 ALLOCATE( sf_ssm_3d(ifpr)%fnow(jpi,jpj,jpk) , STAT=ierr0 ) 283 285 IF( slf_3d(ifpr)%ln_tint ) ALLOCATE( sf_ssm_3d(ifpr)%fdta(jpi,jpj,jpk,2) , STAT=ierr1 ) 284 286 IF( ierr0 + ierr1 > 0 ) THEN … … 296 298 ENDIF 297 299 DO ifpr = 1, nfld_2d 298 300 ALLOCATE( sf_ssm_2d(ifpr)%fnow(jpi,jpj,1) , STAT=ierr0 ) 299 301 IF( slf_2d(ifpr)%ln_tint ) ALLOCATE( sf_ssm_2d(ifpr)%fdta(jpi,jpj,1,2) , STAT=ierr1 ) 300 302 IF( ierr0 + ierr1 > 0 ) THEN … … 311 313 ENDIF 312 314 ! 313 CALL sbc_ssm( nit000 ) ! need to define ss?_m arrays used in iceistate315 CALL sbc_ssm( nit000, Kbb, Kmm ) ! need to define ss?_m arrays used in iceistate 314 316 l_initdone = .TRUE. 315 317 ! -
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/SAS/step.F90
r12178 r12928 49 49 50 50 !!---------------------------------------------------------------------- 51 !! time level indices 52 !!---------------------------------------------------------------------- 53 INTEGER, PUBLIC :: Nbb, Nnn, Naa, Nrhs !! used by nemo_init 54 !!---------------------------------------------------------------------- 51 55 !! NEMO/SAS 4.0 , NEMO Consortium (2018) 52 56 !! $Id$ … … 74 78 75 79 #if defined key_agrif 80 IF( nstop > 0 ) return ! avoid to go further if an error was detected during previous time step 76 81 kstp = nit000 + Agrif_Nb_Step() 82 Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs ! agrif_oce module copies of time level indices 77 83 IF ( lk_agrif_debug ) THEN 78 84 IF ( Agrif_Root() .and. lwp) Write(*,*) '---' … … 96 102 ! From SAS: ocean bdy data are wrong (but we do not care) and ice bdy data are OK. 97 103 ! This is not clean and should be changed in the future. 98 IF( ln_bdy ) CALL bdy_dta ( kstp, kt_offset=+1 ) ! update dynamic & tracer data at open boundaries99 104 ! ==> 100 CALL sbc ( kstp ) ! Sea Boundary Condition (including sea-ice) 105 IF( ln_bdy ) CALL bdy_dta( kstp, Nnn ) ! update dynamic & tracer data at open boundaries 106 CALL sbc ( kstp, Nbb, Nnn ) ! Sea Boundary Condition (including sea-ice) 101 107 102 CALL dia_wri( kstp )! ocean model: outputs108 CALL dia_wri( kstp, Nnn ) ! ocean model: outputs 103 109 104 110 #if defined key_agrif 105 111 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 106 ! AGRIF 112 ! AGRIF recursive integration 107 113 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 108 114 CALL Agrif_Integrate_ChildGrids( stp ) 109 110 IF( Agrif_NbStepint() == 0 ) THEN ! AGRIF Update from zoom N to zoom 1 then to Parent111 #if defined key_si3112 CALL Agrif_Update_ice( ) ! update sea-ice113 #endif114 ENDIF115 115 #endif 116 116 … … 121 121 IF( indic < 0 ) THEN 122 122 CALL ctl_stop( 'step: indic < 0' ) 123 CALL dia_wri_state( 'output.abort' )123 CALL dia_wri_state( Nnn, 'output.abort' ) 124 124 ENDIF 125 IF( kstp == nit000 ) CALL iom_close( numror ) ! close input ocean restart file 125 #if defined key_agrif 126 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 127 ! AGRIF update 128 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 129 IF( Agrif_NbStepint() == 0 .AND. nstop == 0 ) THEN ! AGRIF Update from zoom N to zoom 1 then to Parent 130 #if defined key_si3 131 CALL Agrif_Update_ice( ) ! update sea-ice 132 #endif 133 ENDIF 134 #endif 135 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 136 ! File manipulation at the end of the first time step 137 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 138 IF( kstp == nit000 ) CALL iom_close( numror ) ! close input ocean restart file 126 139 127 140 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 128 141 ! Coupled mode 129 142 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 130 IF( lk_oasis ) CALL sbc_cpl_snd( kstp ) ! coupled mode : field exchanges if OASIS-coupled ice143 IF( lk_oasis ) CALL sbc_cpl_snd( kstp, Nbb, Nnn ) ! coupled mode : field exchanges if OASIS-coupled ice 131 144 132 145 #if defined key_iomput -
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/SAS/stpctl.F90
r10603 r12928 63 63 ! 64 64 ll_wrtstp = ( MOD( kt, sn_cfctl%ptimincr ) == 0 ) .OR. ( kt == nitend ) 65 ll_colruns = ll_wrtstp .AND. ( ln_ctl .OR.sn_cfctl%l_runstat )65 ll_colruns = ll_wrtstp .AND. ( sn_cfctl%l_runstat ) 66 66 ll_wrtruns = ll_colruns .AND. lwm 67 67 IF( kt == nit000 .AND. lwp ) THEN … … 73 73 ! ! open run.stat file(s) at start whatever 74 74 ! ! the value of sn_cfctl%ptimincr 75 IF( lwm .AND. ( ln_ctl .OR.sn_cfctl%l_runstat ) ) THEN75 IF( lwm .AND. ( sn_cfctl%l_runstat ) ) THEN 76 76 CALL ctl_opn( numrun, 'run.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 77 77 clname = 'run.stat.nc'
Note: See TracChangeset
for help on using the changeset viewer.