- Timestamp:
- 2015-10-26T10:08:06+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO12_CFL_diags_take2/NEMOGCM/NEMO/OFF_SRC/nemogcm.F90
- Property svn:keywords set to Id
r4715 r5832 18 18 USE c1d ! 1D configuration 19 19 USE domcfg ! domain configuration (dom_cfg routine) 20 USE domain ! domain initialization 21 USE istate ! initial state setting (istate_init routine)20 USE domain ! domain initialization from coordinate & bathymetry (dom_init routine) 21 USE domrea ! domain initialization from mesh_mask (dom_init routine) 22 22 USE eosbn2 ! equation of state (eos bn2 routine) 23 23 ! ! ocean physics … … 34 34 USE trcstp ! passive tracer time-stepping (trc_stp routine) 35 35 USE dtadyn ! Lecture and interpolation of the dynamical fields 36 USE stpctl ! time stepping control (stp_ctl routine)37 36 ! ! I/O & MPP 38 37 USE iom ! I/O library … … 46 45 USE timing ! Timing 47 46 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 48 USE lbcnfd, ONLY: isendto, nsndto 47 USE lbcnfd, ONLY: isendto, nsndto, nfsloop, nfeloop ! Setup of north fold exchanges 49 48 50 49 USE trc 51 50 USE trcnam 52 51 USE trcrst 52 USE diaptr ! Need to initialise this as some variables are used in if statements later 53 53 54 54 IMPLICIT NONE … … 61 61 !!---------------------------------------------------------------------- 62 62 !! NEMO/OFF 3.3 , NEMO Consortium (2010) 63 !! $Id : nemogcm.F90 2528 2010-12-27 17:33:53Z rblod$63 !! $Id$ 64 64 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 65 65 !!---------------------------------------------------------------------- … … 94 94 istp = nit000 95 95 ! 96 CALL iom_init( "nemo") ! iom_put initialization (must be done after nemo_init for AGRIF+XIOS+OASIS)96 CALL iom_init( cxios_context ) ! iom_put initialization (must be done after nemo_init for AGRIF+XIOS+OASIS) 97 97 ! 98 98 DO WHILE ( istp <= nitend .AND. nstop == 0 ) ! time stepping … … 107 107 END DO 108 108 #if defined key_iomput 109 CALL iom_context_finalize( "nemo") ! needed for XIOS+AGRIF109 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 110 110 #endif 111 111 … … 142 142 INTEGER :: ilocal_comm ! local integer 143 143 INTEGER :: ios 144 LOGICAL :: llexist 144 145 CHARACTER(len=80), DIMENSION(16) :: cltxt 145 146 !! … … 148 149 & nn_bench, nn_timing, nn_diacfl 149 150 NAMELIST/namcfg/ cp_cfg, cp_cfz, jp_cfg, jpidta, jpjdta, jpkdta, jpiglo, jpjglo, & 150 & jpizoom, jpjzoom, jperio 151 & jpizoom, jpjzoom, jperio, ln_use_jattr 151 152 !!---------------------------------------------------------------------- 152 153 cltxt = '' 154 cxios_context = 'nemo' 153 155 ! 154 156 ! ! Open reference namelist and configuration namelist files … … 180 182 ! !--------------------------------------------! 181 183 #if defined key_iomput 182 CALL xios_initialize( " nemo",return_comm=ilocal_comm )183 narea = mynode( cltxt, numnam_ref, numnam_cfg, numond , nstop, ilocal_comm ) ! Nodes selection184 CALL xios_initialize( "for_xios_mpi_id",return_comm=ilocal_comm ) 185 narea = mynode( cltxt, 'output.namelist.dyn', numnam_ref, numnam_cfg, numond , nstop, ilocal_comm ) ! Nodes selection 184 186 #else 185 187 ilocal_comm = 0 186 narea = mynode( cltxt, numnam_ref, numnam_cfg, numond , nstop ) ! Nodes selection (control print return in cltxt)188 narea = mynode( cltxt, 'output.namelist.dyn', numnam_ref, numnam_cfg, numond , nstop ) ! Nodes selection (control print return in cltxt) 187 189 #endif 188 190 … … 232 234 WRITE(numout,*) ' NEMO team' 233 235 WRITE(numout,*) ' Ocean General Circulation Model' 234 WRITE(numout,*) ' version 3. 5 (2012) '236 WRITE(numout,*) ' version 3.6 (2015) ' 235 237 WRITE(numout,*) 236 238 WRITE(numout,*) … … 267 269 IF( lk_c1d ) CALL c1d_init ! 1D column configuration 268 270 CALL dom_cfg ! Domain configuration 269 CALL dom_init ! Domain 271 ! 272 INQUIRE( FILE='coordinates.nc', EXIST = llexist ) ! Check if coordinate file exist 273 ! 274 IF( llexist ) THEN ; CALL dom_init ! compute the grid from coordinates and bathymetry 275 ELSE ; CALL dom_rea ! read grid from the meskmask 276 ENDIF 270 277 CALL istate_init ! ocean initial state (Dynamics and tracers) 271 278 … … 274 281 IF( ln_ctl ) CALL prt_ctl_init ! Print control 275 282 276 ! ! Ocean physics277 283 CALL sbc_init ! Forcings : surface module 284 278 285 #if ! defined key_degrad 279 286 CALL ldf_tra_init ! Lateral ocean tracer physics … … 281 288 IF( lk_ldfslp ) CALL ldf_slp_init ! slope of lateral mixing 282 289 283 ! ! Active tracers284 290 CALL tra_qsr_init ! penetrative solar radiation qsr 285 291 IF( lk_trabbl ) CALL tra_bbl_init ! advective (and/or diffusive) bottom boundary layer scheme 286 292 287 CALL trc_nam_run ! Needed to get restart parameters for passive tracers 288 IF( ln_rsttr ) THEN 289 neuler = 1 ! Set time-step indicator at nit000 (leap-frog) 290 CALL trc_rst_cal( nit000, 'READ' ) ! calendar 291 ELSE 292 neuler = 0 ! Set time-step indicator at nit000 (euler) 293 CALL day_init ! set calendar 294 ENDIF 295 ! ! Dynamics 293 CALL trc_nam_run ! Needed to get restart parameters for passive tracers 294 CALL trc_rst_cal( nit000, 'READ' ) ! calendar 296 295 CALL dta_dyn_init ! Initialization for the dynamics 297 296 298 ! ! Passive tracers299 297 CALL trc_init ! Passive tracers initialization 300 301 IF(lwp) WRITE(numout,cform_aaa) ! Flag AAAAAAA 298 CALL dia_ptr_init ! Initialise diaptr as some variables are used 299 ! ! in various advection and diffusion routines 300 IF(lwp) WRITE(numout,cform_aaa) ! Flag AAAAAAA 302 301 ! 303 302 IF( nn_timing == 1 ) CALL timing_stop( 'nemo_init') … … 354 353 WRITE(numout,*) ' left bottom j index of the zoom (in data domain) jpizoom = ', jpjzoom 355 354 WRITE(numout,*) ' lateral cond. type (between 0 and 6) jperio = ', jperio 355 WRITE(numout,*) ' use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr 356 356 ENDIF 357 357 ! ! Parameter control … … 589 589 !!---------------------------------------------------------------------- 590 590 !! 1.0 ! 2011-10 (A. C. Coward, NOCS & J. Donners, PRACE) 591 !! 2.0 ! 2013-06 Setup avoiding MPI communication (I. Epicoco, S. Mocavero, CMCC) 591 !! 2.0 ! 2013-06 Setup avoiding MPI communication (I. Epicoco, S. 592 !Mocavero, CMCC) 592 593 !!---------------------------------------------------------------------- 593 594 … … 612 613 !loop over the other north-fold processes to find the processes 613 614 !managing the points belonging to the sxT-dxT range 614 DO jn = jpnij - jpni +1, jpnij 615 IF ( njmppt(jn) == njmppmax ) THEN615 616 DO jn = 1, jpni 616 617 !sxT is the first point (in the global domain) of the jn 617 618 !process 618 sxT = n imppt(jn)619 sxT = nfiimpp(jn, jpnj) 619 620 !dxT is the last point (in the global domain) of the jn 620 621 !process 621 dxT = n imppt(jn) + nlcit(jn) - 1622 dxT = nfiimpp(jn, jpnj) + nfilcit(jn, jpnj) - 1 622 623 IF ((sxM .gt. sxT) .AND. (sxM .lt. dxT)) THEN 623 624 nsndto = nsndto + 1 624 isendto(nsndto) = jn625 ELSEIF ((sxM .le. sxT) .AND. (dxM .g t. dxT)) THEN625 isendto(nsndto) = jn 626 ELSEIF ((sxM .le. sxT) .AND. (dxM .ge. dxT)) THEN 626 627 nsndto = nsndto + 1 627 isendto(nsndto) = jn628 isendto(nsndto) = jn 628 629 ELSEIF ((dxM .lt. dxT) .AND. (sxT .lt. dxM)) THEN 629 630 nsndto = nsndto + 1 630 isendto(nsndto) = jn631 isendto(nsndto) = jn 631 632 END IF 632 END IF633 633 END DO 634 nfsloop = 1 635 nfeloop = nlci 636 DO jn = 2,jpni-1 637 IF(nfipproc(jn,jpnj) .eq. (narea - 1)) THEN 638 IF (nfipproc(jn - 1 ,jpnj) .eq. -1) THEN 639 nfsloop = nldi 640 ENDIF 641 IF (nfipproc(jn + 1,jpnj) .eq. -1) THEN 642 nfeloop = nlei 643 ENDIF 644 ENDIF 645 END DO 646 634 647 ENDIF 635 648 l_north_nogather = .TRUE. 636 637 649 END SUBROUTINE nemo_northcomms 638 650 #else … … 641 653 END SUBROUTINE nemo_northcomms 642 654 #endif 655 656 SUBROUTINE istate_init 657 !!---------------------------------------------------------------------- 658 !! *** ROUTINE istate_init *** 659 !! 660 !! ** Purpose : Initialization to zero of the dynamics and tracers. 661 !!---------------------------------------------------------------------- 662 ! 663 ! now fields ! after fields ! 664 un (:,:,:) = 0._wp ; ua(:,:,:) = 0._wp ! 665 vn (:,:,:) = 0._wp ; va(:,:,:) = 0._wp ! 666 wn (:,:,:) = 0._wp ! ! 667 hdivn(:,:,:) = 0._wp ! ! 668 tsn (:,:,:,:) = 0._wp ! ! 669 ! 670 rhd (:,:,:) = 0.e0 671 rhop (:,:,:) = 0.e0 672 rn2 (:,:,:) = 0.e0 673 ! 674 END SUBROUTINE istate_init 675 676 SUBROUTINE stp_ctl( kt, kindic ) 677 !!---------------------------------------------------------------------- 678 !! *** ROUTINE stp_ctl *** 679 !! 680 !! ** Purpose : Control the run 681 !! 682 !! ** Method : - Save the time step in numstp 683 !! 684 !! ** Actions : 'time.step' file containing the last ocean time-step 685 !!---------------------------------------------------------------------- 686 INTEGER, INTENT(in ) :: kt ! ocean time-step index 687 INTEGER, INTENT(inout) :: kindic ! indicator of solver convergence 688 !!---------------------------------------------------------------------- 689 ! 690 IF( kt == nit000 .AND. lwp ) THEN 691 WRITE(numout,*) 692 WRITE(numout,*) 'stp_ctl : time-stepping control' 693 WRITE(numout,*) '~~~~~~~' 694 ! open time.step file 695 CALL ctl_opn( numstp, 'time.step', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 696 ENDIF 697 ! 698 IF(lwp) WRITE ( numstp, '(1x, i8)' ) kt !* save the current time step in numstp 699 IF(lwp) REWIND( numstp ) ! -------------------------- 700 ! 701 END SUBROUTINE stp_ctl 643 702 !!====================================================================== 644 703 END MODULE nemogcm
Note: See TracChangeset
for help on using the changeset viewer.