Changeset 9226
- Timestamp:
- 2018-01-15T10:25:23+01:00 (6 years ago)
- Location:
- branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
r9119 r9226 174 174 IF( neuler == 0 .AND. kt == nit000 ) THEN !* Euler at first time-step: only swap 175 175 DO jk = 1, jpkm1 176 un(:,:,jk) = ua(:,:,jk) 176 un(:,:,jk) = ua(:,:,jk) ! un <-- ua 177 177 vn(:,:,jk) = va(:,:,jk) 178 178 END DO 179 IF(.NOT.ln_linssh ) THEN 179 IF( .NOT.ln_linssh ) THEN ! e3._b <-- e3._n 180 !!gm BUG ???? I don't understand why it is not : e3._n <-- e3._a 180 181 DO jk = 1, jpkm1 181 e3t_b(:,:,jk) = e3t_n(:,:,jk) 182 e3u_b(:,:,jk) = e3u_n(:,:,jk) 183 e3v_b(:,:,jk) = e3v_n(:,:,jk) 184 END DO 185 ENDIF 182 ! e3t_b(:,:,jk) = e3t_n(:,:,jk) 183 ! e3u_b(:,:,jk) = e3u_n(:,:,jk) 184 ! e3v_b(:,:,jk) = e3v_n(:,:,jk) 185 ! 186 e3t_n(:,:,jk) = e3t_a(:,:,jk) 187 e3u_n(:,:,jk) = e3u_a(:,:,jk) 188 e3v_n(:,:,jk) = e3v_a(:,:,jk) 189 END DO 190 !!gm BUG end 191 ENDIF 192 ! 193 186 194 ELSE !* Leap-Frog : Asselin filter and swap 187 195 ! ! =============! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ICB/icbtrj.F90
r9190 r9226 11 11 12 12 !!---------------------------------------------------------------------- 13 !! icb_trj_init : 13 !! icb_trj_init : initialise iceberg trajectory output files 14 14 !! icb_trj_write : 15 15 !! icb_trj_sync : … … 47 47 48 48 !!---------------------------------------------------------------------- 49 !! NEMO/OPA 3.3 , NEMO Consortium (2011)49 !! NEMO/OPA 4.0 , NEMO Consortium (2017) 50 50 !! $Id$ 51 51 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 80 80 81 81 ! define trajectory output name 82 IF ( lk_mpp ) THEN ; WRITE(cl_filename,'("trajectory_icebergs_",A,"-",A,"_",I4.4,".nc")') &83 &TRIM(ADJUSTL(cldate_ini)), TRIM(ADJUSTL(cldate_end)), narea-184 ELSE ; WRITE(cl_filename,'("trajectory_icebergs_",A,"-",A ,".nc")') &85 &TRIM(ADJUSTL(cldate_ini)), TRIM(ADJUSTL(cldate_end))82 IF ( lk_mpp ) THEN ; WRITE(cl_filename,'("trajectory_icebergs_",A,"-",A,"_",I4.4,".nc")') & 83 & TRIM(ADJUSTL(cldate_ini)), TRIM(ADJUSTL(cldate_end)), narea-1 84 ELSE ; WRITE(cl_filename,'("trajectory_icebergs_",A,"-",A ,".nc")') & 85 & TRIM(ADJUSTL(cldate_ini)), TRIM(ADJUSTL(cldate_end)) 86 86 ENDIF 87 IF ( lwp .AND. nn_verbose_level >= 0)WRITE(numout,'(2a)') 'icebergs, icb_trj_init: creating ',TRIM(cl_filename)88 89 iret = NF90_CREATE( TRIM(cl_filename), NF90_CLOBBER, ntrajid)90 IF (iret .NE. NF90_NOERR) CALL ctl_stop('icebergs, icb_trj_init: nf_create failed')87 IF( lwp .AND. nn_verbose_level >= 0 ) WRITE(numout,'(2a)') 'icebergs, icb_trj_init: creating ',TRIM(cl_filename) 88 89 iret = NF90_CREATE( TRIM(cl_filename), NF90_CLOBBER, ntrajid ) 90 IF (iret .NE. NF90_NOERR) CALL ctl_stop('icebergs, icb_trj_init: nf_create failed') 91 91 92 92 ! Dimensions 93 iret = NF90_DEF_DIM( ntrajid, 'n', NF90_UNLIMITED, n_dim)94 IF ( iret .NE. NF90_NOERR)CALL ctl_stop('icebergs, icb_trj_init: nf_def_dim n failed')95 iret = NF90_DEF_DIM( ntrajid, 'k', nkounts, m_dim)96 IF ( iret .NE. NF90_NOERR)CALL ctl_stop('icebergs, icb_trj_init: nf_def_dim k failed')93 iret = NF90_DEF_DIM( ntrajid, 'n', NF90_UNLIMITED, n_dim ) 94 IF ( iret /= NF90_NOERR ) CALL ctl_stop('icebergs, icb_trj_init: nf_def_dim n failed') 95 iret = NF90_DEF_DIM( ntrajid, 'k', nkounts, m_dim ) 96 IF ( iret /= NF90_NOERR ) CALL ctl_stop('icebergs, icb_trj_init: nf_def_dim k failed') 97 97 98 98 ! Variables 99 iret = NF90_DEF_VAR( ntrajid, 'iceberg_number', NF90_INT, (/m_dim,n_dim/), numberid)100 iret = NF90_DEF_VAR( ntrajid, 'timestep', NF90_INT, n_dim, nstepid)101 iret = NF90_DEF_VAR( ntrajid, 'mass_scaling', NF90_DOUBLE, n_dim, nscaling_id)102 iret = NF90_DEF_VAR( ntrajid, 'lon', NF90_DOUBLE, n_dim, nlonid)103 iret = NF90_DEF_VAR( ntrajid, 'lat', NF90_DOUBLE, n_dim, nlatid)104 iret = NF90_DEF_VAR( ntrajid, 'xi', NF90_DOUBLE, n_dim, nxid)105 iret = NF90_DEF_VAR( ntrajid, 'yj', NF90_DOUBLE, n_dim, nyid)106 iret = NF90_DEF_VAR( ntrajid, 'uvel', NF90_DOUBLE, n_dim, nuvelid)107 iret = NF90_DEF_VAR( ntrajid, 'vvel', NF90_DOUBLE, n_dim, nvvelid)108 iret = NF90_DEF_VAR( ntrajid, 'uto', NF90_DOUBLE, n_dim, nuoid)109 iret = NF90_DEF_VAR( ntrajid, 'vto', NF90_DOUBLE, n_dim, nvoid)110 iret = NF90_DEF_VAR( ntrajid, 'uta', NF90_DOUBLE, n_dim, nuaid)111 iret = NF90_DEF_VAR( ntrajid, 'vta', NF90_DOUBLE, n_dim, nvaid)112 iret = NF90_DEF_VAR( ntrajid, 'uti', NF90_DOUBLE, n_dim, nuiid)113 iret = NF90_DEF_VAR( ntrajid, 'vti', NF90_DOUBLE, n_dim, nviid)114 iret = NF90_DEF_VAR( ntrajid, 'ssh_x', NF90_DOUBLE, n_dim, nsshyid)115 iret = NF90_DEF_VAR( ntrajid, 'ssh_y', NF90_DOUBLE, n_dim, nsshxid)116 iret = NF90_DEF_VAR( ntrajid, 'sst', NF90_DOUBLE, n_dim, nsstid)117 iret = NF90_DEF_VAR( ntrajid, 'icnt', NF90_DOUBLE, n_dim, ncntid)118 iret = NF90_DEF_VAR( ntrajid, 'ithk', NF90_DOUBLE, n_dim, nthkid)119 iret = NF90_DEF_VAR( ntrajid, 'mass', NF90_DOUBLE, n_dim, nmassid)120 iret = NF90_DEF_VAR( ntrajid, 'thickness', NF90_DOUBLE, n_dim, nthicknessid)121 iret = NF90_DEF_VAR( ntrajid, 'width', NF90_DOUBLE, n_dim, nwidthid)122 iret = NF90_DEF_VAR( ntrajid, 'length', NF90_DOUBLE, n_dim, nlengthid)123 iret = NF90_DEF_VAR( ntrajid, 'year', NF90_INT, n_dim, nyearid)124 iret = NF90_DEF_VAR( ntrajid, 'day', NF90_DOUBLE, n_dim, ndayid)125 iret = NF90_DEF_VAR( ntrajid, 'mass_of_bits', NF90_DOUBLE, n_dim, nmass_of_bits_id)126 iret = NF90_DEF_VAR( ntrajid, 'heat_density', NF90_DOUBLE, n_dim, nheat_density_id)99 iret = NF90_DEF_VAR( ntrajid, 'iceberg_number', NF90_INT , (/m_dim,n_dim/), numberid ) 100 iret = NF90_DEF_VAR( ntrajid, 'timestep' , NF90_INT , n_dim , nstepid ) 101 iret = NF90_DEF_VAR( ntrajid, 'mass_scaling' , NF90_DOUBLE, n_dim , nscaling_id ) 102 iret = NF90_DEF_VAR( ntrajid, 'lon' , NF90_DOUBLE, n_dim , nlonid ) 103 iret = NF90_DEF_VAR( ntrajid, 'lat' , NF90_DOUBLE, n_dim , nlatid ) 104 iret = NF90_DEF_VAR( ntrajid, 'xi' , NF90_DOUBLE, n_dim , nxid ) 105 iret = NF90_DEF_VAR( ntrajid, 'yj' , NF90_DOUBLE, n_dim , nyid ) 106 iret = NF90_DEF_VAR( ntrajid, 'uvel' , NF90_DOUBLE, n_dim , nuvelid ) 107 iret = NF90_DEF_VAR( ntrajid, 'vvel' , NF90_DOUBLE, n_dim , nvvelid ) 108 iret = NF90_DEF_VAR( ntrajid, 'uto' , NF90_DOUBLE, n_dim , nuoid ) 109 iret = NF90_DEF_VAR( ntrajid, 'vto' , NF90_DOUBLE, n_dim , nvoid ) 110 iret = NF90_DEF_VAR( ntrajid, 'uta' , NF90_DOUBLE, n_dim , nuaid ) 111 iret = NF90_DEF_VAR( ntrajid, 'vta' , NF90_DOUBLE, n_dim , nvaid ) 112 iret = NF90_DEF_VAR( ntrajid, 'uti' , NF90_DOUBLE, n_dim , nuiid ) 113 iret = NF90_DEF_VAR( ntrajid, 'vti' , NF90_DOUBLE, n_dim , nviid ) 114 iret = NF90_DEF_VAR( ntrajid, 'ssh_x' , NF90_DOUBLE, n_dim , nsshxid ) 115 iret = NF90_DEF_VAR( ntrajid, 'ssh_y' , NF90_DOUBLE, n_dim , nsshyid ) 116 iret = NF90_DEF_VAR( ntrajid, 'sst' , NF90_DOUBLE, n_dim , nsstid ) 117 iret = NF90_DEF_VAR( ntrajid, 'icnt' , NF90_DOUBLE, n_dim , ncntid ) 118 iret = NF90_DEF_VAR( ntrajid, 'ithk' , NF90_DOUBLE, n_dim , nthkid ) 119 iret = NF90_DEF_VAR( ntrajid, 'mass' , NF90_DOUBLE, n_dim , nmassid ) 120 iret = NF90_DEF_VAR( ntrajid, 'thickness' , NF90_DOUBLE, n_dim , nthicknessid ) 121 iret = NF90_DEF_VAR( ntrajid, 'width' , NF90_DOUBLE, n_dim , nwidthid ) 122 iret = NF90_DEF_VAR( ntrajid, 'length' , NF90_DOUBLE, n_dim , nlengthid ) 123 iret = NF90_DEF_VAR( ntrajid, 'year' , NF90_INT , n_dim , nyearid ) 124 iret = NF90_DEF_VAR( ntrajid, 'day' , NF90_DOUBLE, n_dim , ndayid ) 125 iret = NF90_DEF_VAR( ntrajid, 'mass_of_bits' , NF90_DOUBLE, n_dim , nmass_of_bits_id ) 126 iret = NF90_DEF_VAR( ntrajid, 'heat_density' , NF90_DOUBLE, n_dim , nheat_density_id ) 127 127 128 128 ! Attributes 129 iret = NF90_PUT_ATT( ntrajid, numberid, 'long_name', 'iceberg number on this processor')130 iret = NF90_PUT_ATT( ntrajid, numberid, 'units', 'count')131 iret = NF90_PUT_ATT( ntrajid, nstepid, 'long_name', 'timestep number kt')132 iret = NF90_PUT_ATT( ntrajid, nstepid, 'units', 'count')133 iret = NF90_PUT_ATT( ntrajid, nlonid, 'long_name', 'longitude')134 iret = NF90_PUT_ATT( ntrajid, nlonid, 'units', 'degrees_E')135 iret = NF90_PUT_ATT( ntrajid, nlatid, 'long_name', 'latitude')136 iret = NF90_PUT_ATT( ntrajid, nlatid, 'units', 'degrees_N')137 iret = NF90_PUT_ATT( ntrajid, nxid, 'long_name', 'x grid box position')138 iret = NF90_PUT_ATT( ntrajid, nxid, 'units', 'fractional')139 iret = NF90_PUT_ATT( ntrajid, nyid, 'long_name', 'y grid box position')140 iret = NF90_PUT_ATT( ntrajid, nyid, 'units', 'fractional')141 iret = NF90_PUT_ATT( ntrajid, nuvelid, 'long_name', 'zonal velocity')142 iret = NF90_PUT_ATT( ntrajid, nuvelid, 'units', 'm/s')143 iret = NF90_PUT_ATT( ntrajid, nvvelid, 'long_name', 'meridional velocity')144 iret = NF90_PUT_ATT( ntrajid, nvvelid, 'units', 'm/s')145 iret = NF90_PUT_ATT( ntrajid, nuoid, 'long_name', 'ocean u component')146 iret = NF90_PUT_ATT( ntrajid, nuoid, 'units', 'm/s')147 iret = NF90_PUT_ATT( ntrajid, nvoid, 'long_name', 'ocean v component')148 iret = NF90_PUT_ATT( ntrajid, nvoid, 'units', 'm/s')149 iret = NF90_PUT_ATT( ntrajid, nuaid, 'long_name', 'atmosphere u component')150 iret = NF90_PUT_ATT( ntrajid, nuaid, 'units', 'm/s')151 iret = NF90_PUT_ATT( ntrajid, nvaid, 'long_name', 'atmosphere v component')152 iret = NF90_PUT_ATT( ntrajid, nvaid, 'units', 'm/s')153 iret = NF90_PUT_ATT( ntrajid, nuiid, 'long_name', 'sea ice u component')154 iret = NF90_PUT_ATT( ntrajid, nuiid, 'units', 'm/s')155 iret = NF90_PUT_ATT( ntrajid, nviid, 'long_name', 'sea ice v component')156 iret = NF90_PUT_ATT( ntrajid, nviid, 'units', 'm/s')157 iret = NF90_PUT_ATT( ntrajid, nsshxid, 'long_name', 'sea surface height gradient from x points')158 iret = NF90_PUT_ATT( ntrajid, nsshxid, 'units', 'm/m')159 iret = NF90_PUT_ATT( ntrajid, nsshyid, 'long_name', 'sea surface height gradient from y points')160 iret = NF90_PUT_ATT( ntrajid, nsshyid, 'units', 'm/m')161 iret = NF90_PUT_ATT( ntrajid, nsstid, 'long_name', 'sea surface temperature')162 iret = NF90_PUT_ATT( ntrajid, nsstid, 'units', 'degC')163 iret = NF90_PUT_ATT( ntrajid, ncntid, 'long_name', 'sea ice concentration')164 iret = NF90_PUT_ATT( ntrajid, ncntid, 'units', 'degC')165 iret = NF90_PUT_ATT( ntrajid, nthkid, 'long_name', 'sea ice thickness')166 iret = NF90_PUT_ATT( ntrajid, nthkid, 'units', 'm')167 iret = NF90_PUT_ATT( ntrajid, nmassid, 'long_name', 'mass')168 iret = NF90_PUT_ATT( ntrajid, nmassid, 'units', 'kg')169 iret = NF90_PUT_ATT( ntrajid, nthicknessid, 'long_name', 'thickness')170 iret = NF90_PUT_ATT( ntrajid, nthicknessid, 'units', 'm')171 iret = NF90_PUT_ATT( ntrajid, nwidthid, 'long_name', 'width')172 iret = NF90_PUT_ATT( ntrajid, nwidthid, 'units', 'm')173 iret = NF90_PUT_ATT( ntrajid, nlengthid, 'long_name', 'length')174 iret = NF90_PUT_ATT( ntrajid, nlengthid, 'units', 'm')175 iret = NF90_PUT_ATT( ntrajid, nyearid, 'long_name', 'calendar year')176 iret = NF90_PUT_ATT( ntrajid, nyearid, 'units', 'years')177 iret = NF90_PUT_ATT( ntrajid, ndayid, 'long_name', 'day of year')178 iret = NF90_PUT_ATT( ntrajid, ndayid, 'units', 'days')179 iret = NF90_PUT_ATT( ntrajid, nscaling_id, 'long_name', 'scaling factor for mass of berg')180 iret = NF90_PUT_ATT( ntrajid, nscaling_id, 'units', 'none')181 iret = NF90_PUT_ATT( ntrajid, nmass_of_bits_id, 'long_name', 'mass of bergy bits')182 iret = NF90_PUT_ATT( ntrajid, nmass_of_bits_id, 'units', 'kg')183 iret = NF90_PUT_ATT( ntrajid, nheat_density_id, 'long_name', 'heat density')184 iret = NF90_PUT_ATT( ntrajid, nheat_density_id, 'units', 'J/kg')185 129 iret = NF90_PUT_ATT( ntrajid, numberid , 'long_name', 'iceberg number on this processor' ) 130 iret = NF90_PUT_ATT( ntrajid, numberid , 'units' , 'count' ) 131 iret = NF90_PUT_ATT( ntrajid, nstepid , 'long_name', 'timestep number kt' ) 132 iret = NF90_PUT_ATT( ntrajid, nstepid , 'units' , 'count' ) 133 iret = NF90_PUT_ATT( ntrajid, nlonid , 'long_name', 'longitude' ) 134 iret = NF90_PUT_ATT( ntrajid, nlonid , 'units' , 'degrees_E') 135 iret = NF90_PUT_ATT( ntrajid, nlatid , 'long_name', 'latitude' ) 136 iret = NF90_PUT_ATT( ntrajid, nlatid , 'units' , 'degrees_N' ) 137 iret = NF90_PUT_ATT( ntrajid, nxid , 'long_name', 'x grid box position' ) 138 iret = NF90_PUT_ATT( ntrajid, nxid , 'units' , 'fractional' ) 139 iret = NF90_PUT_ATT( ntrajid, nyid , 'long_name', 'y grid box position' ) 140 iret = NF90_PUT_ATT( ntrajid, nyid , 'units' , 'fractional' ) 141 iret = NF90_PUT_ATT( ntrajid, nuvelid , 'long_name', 'zonal velocity' ) 142 iret = NF90_PUT_ATT( ntrajid, nuvelid , 'units' , 'm/s' ) 143 iret = NF90_PUT_ATT( ntrajid, nvvelid , 'long_name', 'meridional velocity' ) 144 iret = NF90_PUT_ATT( ntrajid, nvvelid , 'units' , 'm/s' ) 145 iret = NF90_PUT_ATT( ntrajid, nuoid , 'long_name', 'ocean u component' ) 146 iret = NF90_PUT_ATT( ntrajid, nuoid , 'units' , 'm/s' ) 147 iret = NF90_PUT_ATT( ntrajid, nvoid , 'long_name', 'ocean v component' ) 148 iret = NF90_PUT_ATT( ntrajid, nvoid , 'units' , 'm/s' ) 149 iret = NF90_PUT_ATT( ntrajid, nuaid , 'long_name', 'atmosphere u component' ) 150 iret = NF90_PUT_ATT( ntrajid, nuaid , 'units' , 'm/s' ) 151 iret = NF90_PUT_ATT( ntrajid, nvaid , 'long_name', 'atmosphere v component' ) 152 iret = NF90_PUT_ATT( ntrajid, nvaid , 'units' , 'm/s' ) 153 iret = NF90_PUT_ATT( ntrajid, nuiid , 'long_name', 'sea ice u component' ) 154 iret = NF90_PUT_ATT( ntrajid, nuiid , 'units' , 'm/s' ) 155 iret = NF90_PUT_ATT( ntrajid, nviid , 'long_name', 'sea ice v component' ) 156 iret = NF90_PUT_ATT( ntrajid, nviid , 'units' , 'm/s' ) 157 iret = NF90_PUT_ATT( ntrajid, nsshxid , 'long_name', 'sea surface height gradient from x points' ) 158 iret = NF90_PUT_ATT( ntrajid, nsshxid , 'units' , 'm/m' ) 159 iret = NF90_PUT_ATT( ntrajid, nsshyid , 'long_name', 'sea surface height gradient from y points' ) 160 iret = NF90_PUT_ATT( ntrajid, nsshyid , 'units' , 'm/m' ) 161 iret = NF90_PUT_ATT( ntrajid, nsstid , 'long_name', 'sea surface temperature' ) 162 iret = NF90_PUT_ATT( ntrajid, nsstid , 'units' , 'degC') 163 iret = NF90_PUT_ATT( ntrajid, ncntid , 'long_name', 'sea ice concentration' ) 164 iret = NF90_PUT_ATT( ntrajid, ncntid , 'units' , 'degC') 165 iret = NF90_PUT_ATT( ntrajid, nthkid , 'long_name', 'sea ice thickness' ) 166 iret = NF90_PUT_ATT( ntrajid, nthkid , 'units' , 'm' ) 167 iret = NF90_PUT_ATT( ntrajid, nmassid , 'long_name', 'mass') 168 iret = NF90_PUT_ATT( ntrajid, nmassid , 'units' , 'kg' ) 169 iret = NF90_PUT_ATT( ntrajid, nthicknessid , 'long_name', 'thickness' ) 170 iret = NF90_PUT_ATT( ntrajid, nthicknessid , 'units' , 'm' ) 171 iret = NF90_PUT_ATT( ntrajid, nwidthid , 'long_name', 'width' ) 172 iret = NF90_PUT_ATT( ntrajid, nwidthid , 'units' , 'm' ) 173 iret = NF90_PUT_ATT( ntrajid, nlengthid , 'long_name', 'length' ) 174 iret = NF90_PUT_ATT( ntrajid, nlengthid , 'units' , 'm' ) 175 iret = NF90_PUT_ATT( ntrajid, nyearid , 'long_name', 'calendar year' ) 176 iret = NF90_PUT_ATT( ntrajid, nyearid , 'units' , 'years' ) 177 iret = NF90_PUT_ATT( ntrajid, ndayid , 'long_name', 'day of year' ) 178 iret = NF90_PUT_ATT( ntrajid, ndayid , 'units' , 'days' ) 179 iret = NF90_PUT_ATT( ntrajid, nscaling_id , 'long_name', 'scaling factor for mass of berg' ) 180 iret = NF90_PUT_ATT( ntrajid, nscaling_id , 'units' , 'none' ) 181 iret = NF90_PUT_ATT( ntrajid, nmass_of_bits_id, 'long_name', 'mass of bergy bits' ) 182 iret = NF90_PUT_ATT( ntrajid, nmass_of_bits_id, 'units' , 'kg' ) 183 iret = NF90_PUT_ATT( ntrajid, nheat_density_id, 'long_name', 'heat density' ) 184 iret = NF90_PUT_ATT( ntrajid, nheat_density_id, 'units' , 'J/kg' ) 185 ! 186 186 ! End define mode 187 iret = NF90_ENDDEF( ntrajid)187 iret = NF90_ENDDEF( ntrajid ) 188 188 ! 189 189 END SUBROUTINE icb_trj_init … … 199 199 !! can rewrite so that it is buffered and written out more efficiently 200 200 !!---------------------------------------------------------------------- 201 INTEGER, INTENT( in ) :: kt 201 INTEGER, INTENT( in ) :: kt ! time-step index 202 202 ! 203 203 INTEGER :: iret, jn 204 204 CHARACTER(len=80) :: cl_filename 205 205 TYPE(iceberg), POINTER :: this 206 TYPE(point ), POINTER :: pt206 TYPE(point ), POINTER :: pt 207 207 !!---------------------------------------------------------------------- 208 208 … … 212 212 this => first_berg 213 213 jn = num_traj 214 DO WHILE (ASSOCIATED(this))214 DO WHILE( ASSOCIATED(this) ) 215 215 pt => this%current_point 216 jn =jn+1217 218 iret = NF90_PUT_VAR( ntrajid, numberid, this%number, (/1,jn/), (/nkounts,1/) )219 iret = NF90_PUT_VAR( ntrajid, nstepid, kt, (/ jn /) )220 iret = NF90_PUT_VAR( ntrajid, nscaling_id, this%mass_scaling, (/ jn /) )221 222 iret = NF90_PUT_VAR( ntrajid, nlonid, pt%lon, (/ jn /) )223 iret = NF90_PUT_VAR( ntrajid, nlatid, pt%lat, (/ jn /) )224 iret = NF90_PUT_VAR( ntrajid, nxid, pt%xi, (/ jn /) )225 iret = NF90_PUT_VAR( ntrajid, nyid, pt%yj, (/ jn /) )226 iret = NF90_PUT_VAR( ntrajid, nuvelid, pt%uvel, (/ jn /) )227 iret = NF90_PUT_VAR( ntrajid, nvvelid, pt%vvel, (/ jn /) )228 iret = NF90_PUT_VAR( ntrajid, nuoid, pt%uo, (/ jn /) )229 iret = NF90_PUT_VAR( ntrajid, nvoid, pt%vo, (/ jn /) )230 iret = NF90_PUT_VAR( ntrajid, nuaid, pt%ua, (/ jn /) )231 iret = NF90_PUT_VAR( ntrajid, nvaid, pt%va, (/ jn /) )232 iret = NF90_PUT_VAR( ntrajid, nuiid, pt%ui, (/ jn /) )233 iret = NF90_PUT_VAR( ntrajid, nviid, pt%vi, (/ jn /) )234 iret = NF90_PUT_VAR( ntrajid, nsshxid, pt%ssh_x, (/ jn /) )235 iret = NF90_PUT_VAR( ntrajid, nsshyid, pt%ssh_y, (/ jn /) )236 iret = NF90_PUT_VAR( ntrajid, nsstid, pt%sst, (/ jn /) )237 iret = NF90_PUT_VAR( ntrajid, ncntid, pt%cn, (/ jn /) )238 iret = NF90_PUT_VAR( ntrajid, nthkid, pt%hi, (/ jn /) )239 iret = NF90_PUT_VAR( ntrajid, nmassid, pt%mass, (/ jn /) )240 iret = NF90_PUT_VAR( ntrajid, nthicknessid, pt%thickness, (/ jn /) )241 iret = NF90_PUT_VAR( ntrajid, nwidthid, pt%width, (/ jn /) )242 iret = NF90_PUT_VAR( ntrajid, nlengthid, pt%length, (/ jn /) )243 iret = NF90_PUT_VAR( ntrajid, nyearid, pt%year, (/ jn /) )244 iret = NF90_PUT_VAR( ntrajid, ndayid, pt%day, (/ jn /) )245 iret = NF90_PUT_VAR( ntrajid, nmass_of_bits_id, pt%mass_of_bits, (/ jn /) )246 iret = NF90_PUT_VAR( ntrajid, nheat_density_id, pt%heat_density, (/ jn /) )247 248 this =>this%next216 jn = jn + 1 217 ! 218 iret = NF90_PUT_VAR( ntrajid, numberid , this%number , (/1,jn/) , (/nkounts,1/) ) 219 iret = NF90_PUT_VAR( ntrajid, nstepid , kt , (/ jn /) ) 220 iret = NF90_PUT_VAR( ntrajid, nscaling_id , this%mass_scaling, (/ jn /) ) 221 ! 222 iret = NF90_PUT_VAR( ntrajid, nlonid , pt%lon , (/ jn /) ) 223 iret = NF90_PUT_VAR( ntrajid, nlatid , pt%lat , (/ jn /) ) 224 iret = NF90_PUT_VAR( ntrajid, nxid , pt%xi , (/ jn /) ) 225 iret = NF90_PUT_VAR( ntrajid, nyid , pt%yj , (/ jn /) ) 226 iret = NF90_PUT_VAR( ntrajid, nuvelid , pt%uvel , (/ jn /) ) 227 iret = NF90_PUT_VAR( ntrajid, nvvelid , pt%vvel , (/ jn /) ) 228 iret = NF90_PUT_VAR( ntrajid, nuoid , pt%uo , (/ jn /) ) 229 iret = NF90_PUT_VAR( ntrajid, nvoid , pt%vo , (/ jn /) ) 230 iret = NF90_PUT_VAR( ntrajid, nuaid , pt%ua , (/ jn /) ) 231 iret = NF90_PUT_VAR( ntrajid, nvaid , pt%va , (/ jn /) ) 232 iret = NF90_PUT_VAR( ntrajid, nuiid , pt%ui , (/ jn /) ) 233 iret = NF90_PUT_VAR( ntrajid, nviid , pt%vi , (/ jn /) ) 234 iret = NF90_PUT_VAR( ntrajid, nsshxid , pt%ssh_x , (/ jn /) ) 235 iret = NF90_PUT_VAR( ntrajid, nsshyid , pt%ssh_y , (/ jn /) ) 236 iret = NF90_PUT_VAR( ntrajid, nsstid , pt%sst , (/ jn /) ) 237 iret = NF90_PUT_VAR( ntrajid, ncntid , pt%cn , (/ jn /) ) 238 iret = NF90_PUT_VAR( ntrajid, nthkid , pt%hi , (/ jn /) ) 239 iret = NF90_PUT_VAR( ntrajid, nmassid , pt%mass , (/ jn /) ) 240 iret = NF90_PUT_VAR( ntrajid, nthicknessid , pt%thickness , (/ jn /) ) 241 iret = NF90_PUT_VAR( ntrajid, nwidthid , pt%width , (/ jn /) ) 242 iret = NF90_PUT_VAR( ntrajid, nlengthid , pt%length , (/ jn /) ) 243 iret = NF90_PUT_VAR( ntrajid, nyearid , pt%year , (/ jn /) ) 244 iret = NF90_PUT_VAR( ntrajid, ndayid , pt%day , (/ jn /) ) 245 iret = NF90_PUT_VAR( ntrajid, nmass_of_bits_id, pt%mass_of_bits , (/ jn /) ) 246 iret = NF90_PUT_VAR( ntrajid, nheat_density_id, pt%heat_density , (/ jn /) ) 247 ! 248 this => this%next 249 249 END DO 250 IF( lwp . and. nn_verbose_level > 0 )WRITE(numout,*) 'trajectory write to frame ', jn250 IF( lwp .AND. nn_verbose_level > 0 ) WRITE(numout,*) 'trajectory write to frame ', jn 251 251 num_traj = jn 252 252 ! … … 263 263 !!---------------------------------------------------------------------- 264 264 ! flush to file 265 iret = NF90_SYNC( ntrajid)266 IF (iret /= NF90_NOERR) CALL ctl_stop( 'icebergs, icb_trj_sync: nf_sync failed' )265 iret = NF90_SYNC( ntrajid ) 266 IF ( iret /= NF90_NOERR ) CALL ctl_stop( 'icebergs, icb_trj_sync: nf_sync failed' ) 267 267 ! 268 268 END SUBROUTINE icb_trj_sync … … 274 274 !!---------------------------------------------------------------------- 275 275 ! Finish up 276 iret = NF90_CLOSE( ntrajid)277 IF ( iret /= NF90_NOERR) CALL ctl_stop( 'icebergs, icb_trj_end: nf_close failed' )276 iret = NF90_CLOSE( ntrajid ) 277 IF ( iret /= NF90_NOERR ) CALL ctl_stop( 'icebergs, icb_trj_end: nf_close failed' ) 278 278 ! 279 279 END SUBROUTINE icb_trj_end
Note: See TracChangeset
for help on using the changeset viewer.