Changeset 9158
- Timestamp:
- 2017-12-21T18:16:12+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_new_runoff_coupling/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_rnf.F90
r9156 r9158 14 14 USE in_out_manager ! I/O units 15 15 USE iom 16 USE wrk_nemo ! Memory allocation 17 USE dom_oce ! Domain sizes (for grid box area e1e2t) 18 USE cpl_oasis3 ! Coupling information (for n_rivers) 16 19 17 20 IMPLICIT NONE 18 21 PRIVATE 19 22 23 PUBLIC cpl_rnf_init ! routine called in nemo_init 24 20 25 TYPE, PUBLIC :: RIVERS_DATA !: Storage for river outflow data 21 26 INTEGER, POINTER, DIMENSION(:,:) :: river_number !: River outflow number 27 REAL, POINTER, DIMENSION(:) :: river_area ! 1D array listing areas of each river outflow (m2) 22 28 END TYPE RIVERS_DATA 23 29 … … 39 45 INTEGER :: ios ! Local integer output status for namelist read 40 46 INTEGER :: inum 41 INTEGER :: ii, ij !: Loop indices47 INTEGER :: ii, jj !: Loop indices 42 48 INTEGER :: max_river 43 ! INTEGER, POINTER, DIMENSION(:,:):: river_number ! 2D array containing the river outflow numbers49 REAL(wp), POINTER, DIMENSION(:,:) :: river_number ! 2D array containing the river outflow numbers 44 50 45 51 NAMELIST/nam_cpl_rnf/file_riv_number … … 50 56 IF(lwp) WRITE(numout,*) 51 57 IF(lwp) WRITE(numout,*) 'cpl_rnf_init : initialization of river runoff coupling' 52 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~ 58 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 53 59 54 60 REWIND(numnam_cfg) … … 69 75 ! Assign space for river numbers 70 76 ALLOCATE( rivers%river_number( jpi, jpj ) ) 71 !CALL wrk_alloc( jpi, jpj, river_number )77 CALL wrk_alloc( jpi, jpj, river_number ) 72 78 73 79 ! Read the river numbers from netcdf file 74 80 CALL iom_open (file_riv_number , inum ) 75 CALL iom_get ( inum, jpdom_data, 'river_number', river s%river_number(:,:))81 CALL iom_get ( inum, jpdom_data, 'river_number', river_number ) 76 82 CALL iom_close( inum ) 77 83 78 ! Print out the largest river number84 ! Convert from a real array to an integer array 79 85 max_river=0 80 86 DO ii = 1, jpi 81 87 DO jj = 1, jpj 88 rivers%river_number(ii,jj) = INT(river_number(ii,jj)) 89 82 90 IF ( rivers%river_number(ii,jj) > max_river ) THEN 83 91 max_river = rivers%river_number(ii,jj) … … 85 93 END DO 86 94 END DO 95 96 ! Print out the largest river number 87 97 WRITE(numout,*) 'Maximum river number = ',max_river 98 99 ! Get the area of each river outflow 100 ALLOCATE( rivers%river_area( n_rivers ) ) 101 rivers%river_area(:) = 0.0 102 DO ii = 1, jpi 103 DO jj = 1, jpj 104 IF ( rivers%river_number(ii,jj) > 0 .AND. rivers%river_number(ii,jj) <= n_rivers ) THEN 105 rivers%river_area(rivers%river_number(ii,jj)) = rivers%river_area(rivers%river_number(ii,jj)) + e1e2t(ii,jj) 106 END IF 107 END IF 108 END IF 109 110 ! Use mpp_sum to add together river areas on other processors 111 CALL mpp_sum( rivers%river_area ) 112 WRITE(numout,*) 'Area of river number 1 is ',rivers%river_area(1) 113 WRITE(numout,*) 'Area of river number 10 is ',rivers%river_area(10) 114 88 115 89 116 END SUBROUTINE cpl_rnf_init
Note: See TracChangeset
for help on using the changeset viewer.