source: branches/UKMO/dev_r5518_new_runoff_coupling/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_rnf.F90 @ 9156

Last change on this file since 9156 was 9156, checked in by dancopsey, 3 years ago

Load river numbers from netcdf file in new cpl_rnf_init routine.

File size: 3.7 KB
Line 
1MODULE cpl_rnf
2   !!======================================================================
3   !!                       ***  MODULE  sbcrnf  ***
4   !! Ocean forcing:  river runoff
5   !!=====================================================================
6   !! History : ?.?  ! 2018-01 (D. Copsey) Initial setup
7   !!----------------------------------------------------------------------
8
9   !!----------------------------------------------------------------------
10   !!   cpl_rnf_init : runoffs initialisation
11   !!----------------------------------------------------------------------
12
13   USE timing          ! Timing
14   USE in_out_manager  ! I/O units
15   USE iom
16   
17   IMPLICIT NONE
18   PRIVATE
19   
20   TYPE, PUBLIC ::   RIVERS_DATA     !: Storage for river outflow data
21      INTEGER, POINTER, DIMENSION(:,:)    ::   river_number       !: River outflow number
22   END TYPE RIVERS_DATA
23   
24   TYPE(RIVERS_DATA), PUBLIC, TARGET :: rivers  !: River data
25   
26CONTAINS
27
28   SUBROUTINE cpl_rnf_init
29      !!----------------------------------------------------------------------
30      !!                    ***  SUBROUTINE cpl_rnf_init  ***
31      !!                     
32      !! ** Purpose : - Read in file for river outflow numbers
33      !!               
34      !!
35      !!----------------------------------------------------------------------
36      !! namelist variables
37      !!-------------------
38      CHARACTER(len=80)                         ::   file_riv_number             !: Filename for river numbers
39      INTEGER                                   ::   ios                 ! Local integer output status for namelist read
40      INTEGER                                   ::   inum
41      INTEGER                                   ::   ii, ij              !: Loop indices
42      INTEGER                                   ::   max_river
43      ! INTEGER, POINTER, DIMENSION(:,:)          ::   river_number        ! 2D array containing the river outflow numbers
44     
45      NAMELIST/nam_cpl_rnf/file_riv_number
46      !!----------------------------------------------------------------------
47
48      IF( nn_timing == 1 ) CALL timing_start('cpl_rnf_init')
49     
50      IF(lwp) WRITE(numout,*)
51      IF(lwp) WRITE(numout,*) 'cpl_rnf_init : initialization of river runoff coupling'
52      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~
53     
54      REWIND(numnam_cfg)
55     
56      ! Read the namelist
57      READ  ( numnam_ref, nam_cpl_rnf, IOSTAT = ios, ERR = 901)
58901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_cpl_rnf in reference namelist', lwp )
59      READ  ( numnam_cfg, nam_cpl_rnf, IOSTAT = ios, ERR = 902 )
60902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_cpl_rnf in configuration namelist', lwp )
61      IF(lwm) WRITE ( numond, nam_cpl_rnf )
62
63      !                                               ! Parameter control and print
64      IF(lwp) WRITE(numout,*) '  '
65      IF(lwp) WRITE(numout,*) '          Namelist nam_cpl_rnf : Coupled runoff'
66      IF(lwp) WRITE(numout,*) '             Input file that contains river numbers = ',file_riv_number
67      IF(lwp) WRITE(numout,*) ' '
68     
69      ! Assign space for river numbers
70      ALLOCATE( rivers%river_number( jpi, jpj ) )
71      ! CALL wrk_alloc( jpi, jpj, river_number )
72     
73      ! Read the river numbers from netcdf file
74      CALL iom_open (file_riv_number , inum )
75      CALL iom_get  ( inum, jpdom_data, 'river_number', rivers%river_number(:,:) )
76      CALL iom_close( inum )
77     
78      ! Print out the largest river number
79      max_river=0
80      DO ii = 1, jpi
81        DO jj = 1, jpj
82          IF ( rivers%river_number(ii,jj) > max_river ) THEN
83            max_river = rivers%river_number(ii,jj)
84          END IF
85        END DO
86      END DO
87      WRITE(numout,*) 'Maximum river number = ',max_river
88     
89   END SUBROUTINE cpl_rnf_init
90
91END MODULE cpl_rnf
Note: See TracBrowser for help on using the repository browser.