@@ -212,7 +212,7 @@ module generic_WOMBATlite
212
212
sio2, &
213
213
co2_csurf, co2_alpha, co2_sc_no, pco2_csurf, &
214
214
o2_csurf, o2_alpha, o2_sc_no, &
215
- no3_vstf, dic_vstf, dicp_vstf, alk_vstf
215
+ no3_vstf, dic_vstf, alk_vstf
216
216
217
217
real , dimension (:,:,:), allocatable :: &
218
218
htotal, &
@@ -276,7 +276,6 @@ module generic_WOMBATlite
276
276
real , dimension (:,:,:), allocatable :: &
277
277
f_dic, &
278
278
f_dicr, &
279
- f_dicp, &
280
279
f_alk, &
281
280
f_no3, &
282
281
f_phy, &
@@ -357,7 +356,6 @@ module generic_WOMBATlite
357
356
real , dimension (:,:), pointer :: &
358
357
p_no3_stf, &
359
358
p_dic_stf, &
360
- p_dicp_stf, &
361
359
p_alk_stf
362
360
363
361
!- ----------------------------------------------------------------------
@@ -1682,18 +1680,14 @@ subroutine user_add_tracers(tracer_list)
1682
1680
flux_virtual = .true. )
1683
1681
1684
1682
! DICp (preformed Dissolved inorganic carbon)
1683
+ ! dts: Note, we use flux_virtual=.true. only to ensure that an stf array is allocated for dicp.
1684
+ ! The dicp stf is set to equal the dic stf in update_from_coupler.
1685
1685
!- ----------------------------------------------------------------------
1686
1686
call g_tracer_add(tracer_list, package_name, &
1687
1687
name = ' dicp' , &
1688
1688
longname = ' preformed Dissolved Inorganic Carbon' , &
1689
1689
units = ' mol/kg' , &
1690
1690
prog = .true. , &
1691
- flux_gas = .true. , &
1692
- flux_gas_name = ' co2_pre_flux' , &
1693
- flux_gas_type = ' air_sea_gas_flux_generic' , &
1694
- flux_gas_molwt = WTMCO2, &
1695
- flux_gas_param = (/ as_coeff_wombatlite, 9.7561e-06 / ), & ! dts: param(2) converts Pa -> atm
1696
- flux_gas_restart_file = ' ocean_wombatlite_airsea_flux.res.nc' , &
1697
1691
flux_virtual = .true. )
1698
1692
1699
1693
! DICr (remineralised dissolved inorganic carbon)
@@ -1809,6 +1803,10 @@ subroutine generic_WOMBATlite_update_from_coupler(tracer_list, ilb, jlb, salt_fl
1809
1803
integer , intent (in ) :: ilb, jlb
1810
1804
real , dimension (ilb:,jlb:), intent (in ) :: salt_flux_added
1811
1805
1806
+ integer :: isc, iec, jsc, jec, isd, ied, jsd, jed, nk, ntau
1807
+
1808
+ call g_tracer_get_common(isc, iec, jsc, jec, isd, ied, jsd, jed, nk, ntau)
1809
+
1812
1810
! Account for virtual fluxes due to salt flux restoring/correction
1813
1811
!- ----------------------------------------------------------------------
1814
1812
call g_tracer_get_pointer(tracer_list, ' no3' , ' stf' , wombat% p_no3_stf)
@@ -1819,14 +1817,13 @@ subroutine generic_WOMBATlite_update_from_coupler(tracer_list, ilb, jlb, salt_fl
1819
1817
wombat% dic_vstf(:,:) = (wombat% dic_global / wombat% sal_global) * salt_flux_added(:,:) ! [mol/m2/s]
1820
1818
wombat% p_dic_stf(:,:) = wombat% p_dic_stf(:,:) + wombat% dic_vstf(:,:) ! [mol/m2/s]
1821
1819
1822
- call g_tracer_get_pointer(tracer_list, ' dicp' , ' stf' , wombat% p_dicp_stf)
1823
- wombat% dicp_vstf(:,:) = (wombat% dic_global / wombat% sal_global) * salt_flux_added(:,:) ! [mol/m2/s]
1824
- wombat% p_dicp_stf(:,:) = wombat% p_dicp_stf(:,:) + wombat% dicp_vstf(:,:) ! [mol/m2/s]
1825
-
1826
1820
call g_tracer_get_pointer(tracer_list, ' alk' , ' stf' , wombat% p_alk_stf)
1827
1821
wombat% alk_vstf(:,:) = (wombat% alk_global / wombat% sal_global) * salt_flux_added(:,:) ! [mol/m2/s]
1828
1822
wombat% p_alk_stf(:,:) = wombat% p_alk_stf(:,:) + wombat% alk_vstf(:,:) ! [mol/m2/s]
1829
1823
1824
+ ! Set dicp stf equal to dic stf
1825
+ call g_tracer_set_values(tracer_list, ' dicp' , ' stf' , wombat% p_dic_stf, isd, jsd)
1826
+
1830
1827
end subroutine generic_WOMBATlite_update_from_coupler
1831
1828
1832
1829
! #######################################################################
@@ -2183,8 +2180,6 @@ subroutine generic_WOMBATlite_update_from_source(tracer_list, Temp, Salt, &
2183
2180
2184
2181
call g_tracer_set_values(tracer_list, ' dic' , ' alpha' , wombat% co2_alpha, isd, jsd)
2185
2182
call g_tracer_set_values(tracer_list, ' dic' , ' csurf' , wombat% co2_csurf, isd, jsd)
2186
- call g_tracer_set_values(tracer_list, ' dicp' , ' alpha' , wombat% co2_alpha, isd, jsd)
2187
- call g_tracer_set_values(tracer_list, ' dicp' , ' csurf' , wombat% co2_csurf, isd, jsd)
2188
2183
2189
2184
wombat% co2_star(:,:,1 ) = wombat% co2_csurf(:,:)
2190
2185
@@ -2344,10 +2339,7 @@ subroutine generic_WOMBATlite_update_from_source(tracer_list, Temp, Salt, &
2344
2339
positive= .true. ) ! [mol/kg]
2345
2340
call g_tracer_get_values(tracer_list, ' dic' , ' field' , wombat% f_dic, isd, jsd, ntau= tau, &
2346
2341
positive= .true. ) ! [mol/kg]
2347
- call g_tracer_get_values(tracer_list, ' dicr' , ' field' , wombat% f_dicr, isd, jsd, ntau= tau, &
2348
- positive= .true. ) ! [mol/kg]
2349
- call g_tracer_get_values(tracer_list, ' dicp' , ' field' , wombat% f_dicp, isd, jsd, ntau= tau, &
2350
- positive= .true. ) ! [mol/kg]
2342
+ call g_tracer_get_values(tracer_list, ' dicr' , ' field' , wombat% f_dicr, isd, jsd, ntau= tau) ! [mol/kg]
2351
2343
call g_tracer_get_values(tracer_list, ' alk' , ' field' , wombat% f_alk, isd, jsd, ntau= tau, &
2352
2344
positive= .true. ) ! [mol/kg]
2353
2345
@@ -3131,7 +3123,6 @@ subroutine generic_WOMBATlite_update_from_source(tracer_list, Temp, Salt, &
3131
3123
- wombat% f_dic(i,j,k) ) * grid_tmask(i,j,k)
3132
3124
wombat% f_alk(i,j,k) = wombat% f_alk(i,j,k) + wombat% alk_correct(i,j,k)
3133
3125
wombat% f_dic(i,j,k) = wombat% f_dic(i,j,k) + wombat% dic_correct(i,j,k)
3134
- wombat% f_dicp(i,j,k) = max (wombat% dic_min * mmol_m3_to_mol_kg, wombat% f_dic(i,j,k))
3135
3126
enddo
3136
3127
enddo ; enddo
3137
3128
@@ -3320,7 +3311,7 @@ subroutine generic_WOMBATlite_update_from_source(tracer_list, Temp, Salt, &
3320
3311
rmask= grid_tmask(:,:,1 ), is_in= isc, js_in= jsc, ie_in= iec, je_in= jec)
3321
3312
3322
3313
if (wombat% id_dicp_vstf .gt. 0 ) &
3323
- used = g_send_data(wombat% id_dicp_vstf, wombat% dicp_vstf , model_time, &
3314
+ used = g_send_data(wombat% id_dicp_vstf, wombat% dic_vstf , model_time, &
3324
3315
rmask= grid_tmask(:,:,1 ), is_in= isc, js_in= jsc, ie_in= iec, je_in= jec)
3325
3316
3326
3317
if (wombat% id_alk_vstf .gt. 0 ) &
@@ -3792,8 +3783,6 @@ subroutine generic_WOMBATlite_set_boundary_values(tracer_list, SST, SSS, rho, il
3792
3783
3793
3784
call g_tracer_set_values(tracer_list, ' dic' , ' alpha' , wombat% co2_alpha, isd, jsd)
3794
3785
call g_tracer_set_values(tracer_list, ' dic' , ' csurf' , wombat% co2_csurf, isd, jsd)
3795
- call g_tracer_set_values(tracer_list, ' dicp' , ' alpha' , wombat% co2_alpha, isd, jsd)
3796
- call g_tracer_set_values(tracer_list, ' dicp' , ' csurf' , wombat% co2_csurf, isd, jsd)
3797
3786
3798
3787
! nnz: If source is called uncomment the following
3799
3788
wombat% init = .false. ! nnz: This is necessary since the above calls appear in source subroutine too.
@@ -3821,10 +3810,6 @@ subroutine generic_WOMBATlite_set_boundary_values(tracer_list, SST, SSS, rho, il
3821
3810
call g_tracer_set_values(tracer_list, ' dic' , ' csurf' , wombat% co2_csurf, isd, jsd)
3822
3811
call g_tracer_set_values(tracer_list, ' dic' , ' sc_no' , wombat% co2_sc_no, isd, jsd)
3823
3812
3824
- call g_tracer_set_values(tracer_list, ' dicp' , ' alpha' , wombat% co2_alpha, isd, jsd)
3825
- call g_tracer_set_values(tracer_list, ' dicp' , ' csurf' , wombat% co2_csurf, isd, jsd)
3826
- call g_tracer_set_values(tracer_list, ' dicp' , ' sc_no' , wombat% co2_sc_no, isd, jsd)
3827
-
3828
3813
call g_tracer_get_values(tracer_list, ' o2' , ' alpha' , wombat% o2_alpha, isd, jsd)
3829
3814
call g_tracer_get_values(tracer_list, ' o2' , ' csurf' , wombat% o2_csurf ,isd, jsd)
3830
3815
@@ -3942,11 +3927,9 @@ subroutine user_allocate_arrays
3942
3927
allocate (wombat% o2_sc_no(isd:ied, jsd:jed)); wombat% o2_sc_no(:,:)= 0.0
3943
3928
allocate (wombat% no3_vstf(isd:ied, jsd:jed)); wombat% no3_vstf(:,:)= 0.0
3944
3929
allocate (wombat% dic_vstf(isd:ied, jsd:jed)); wombat% dic_vstf(:,:)= 0.0
3945
- allocate (wombat% dicp_vstf(isd:ied, jsd:jed)); wombat% dicp_vstf(:,:)= 0.0
3946
3930
allocate (wombat% alk_vstf(isd:ied, jsd:jed)); wombat% alk_vstf(:,:)= 0.0
3947
3931
3948
3932
allocate (wombat% f_dic(isd:ied, jsd:jed, 1 :nk)); wombat% f_dic(:,:,:)= 0.0
3949
- allocate (wombat% f_dicp(isd:ied, jsd:jed, 1 :nk)); wombat% f_dicp(:,:,:)= 0.0
3950
3933
allocate (wombat% f_dicr(isd:ied, jsd:jed, 1 :nk)); wombat% f_dicr(:,:,:)= 0.0
3951
3934
allocate (wombat% f_alk(isd:ied, jsd:jed, 1 :nk)); wombat% f_alk(:,:,:)= 0.0
3952
3935
allocate (wombat% f_no3(isd:ied, jsd:jed, 1 :nk)); wombat% f_no3(:,:,:)= 0.0
@@ -4088,12 +4071,10 @@ subroutine user_deallocate_arrays
4088
4071
wombat% o2_sc_no, &
4089
4072
wombat% no3_vstf, &
4090
4073
wombat% dic_vstf, &
4091
- wombat% dicp_vstf, &
4092
4074
wombat% alk_vstf)
4093
4075
4094
4076
deallocate ( &
4095
4077
wombat% f_dic, &
4096
- wombat% f_dicp, &
4097
4078
wombat% f_dicr, &
4098
4079
wombat% f_alk, &
4099
4080
wombat% f_no3, &
0 commit comments