Skip to content

Commit 637ca9a

Browse files
Mariona Claretjkrasting
authored andcommitted
Removed separate htotal tracer for 14C
1 parent 82521c3 commit 637ca9a

File tree

1 file changed

+22
-71
lines changed

1 file changed

+22
-71
lines changed

generic_tracers/generic_abiotic.F90

Lines changed: 22 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,6 @@
7474
!! ab_htotal_valid_min = 3.981E-09
7575
!! ab_htotal_valid_max = 1.259E-08
7676
!! #
77-
!! ab_htotal14c_src_file = INPUT/init_ocean_cobalt.res.nc
78-
!! ab_htotal14c_src_var_name = htotal
79-
!! ab_htotal14c_src_var_unit = none
80-
!! ab_htotal14c_dest_var_name = ab_htotal14c
81-
!! ab_htotal14c_dest_var_unit = mol kg-1
82-
!! ab_htotal14c_src_var_record = 1
83-
!! ab_htotal14c_src_var_gridspec = NONE
84-
!! ab_htotal14c_valid_min = 3.981E-09
85-
!! ab_htotal14c_valid_max = 1.259E-08
86-
!! #
8777
!! ## divide by 1e6 to convert from umol/kg to mol/kg
8878
!! dissicabio_src_file = INPUT/Preind_DIC.nc
8979
!! dissicabio_src_var_name = Preind_DIC
@@ -155,20 +145,17 @@
155145
!! #-- Non-CMIP Tracer Fields
156146
!! "generic_abiotic", "ab_alk", "ab_alk", "ocean_abiotic","all",.true.,"none", 2
157147
!! "generic_abiotic", "ab_htotal", "ab_htotal", "ocean_abiotic","all",.true.,"none", 2
158-
!! "generic_abiotic", "ab_htotal14c", "ab_htotal14c", "ocean_abiotic","all",.true.,"none", 2
159148
!! "generic_abiotic", "ab_po4", "ab_po4", "ocean_abiotic","all",.true.,"none", 2
160149
!! "generic_abiotic", "ab_sio4", "ab_sio4", "ocean_abiotic","all",.true.,"none", 2
161150
!! "generic_abiotic", "jdecay_di14c", "jdecay_di14c", "ocean_abiotic","all",.true.,"none", 2
162151
!! "generic_abiotic_z", "ab_alk", "ab_alk", "ocean_abiotic_z","all",.true.,"none",2
163152
!! "generic_abiotic_z", "ab_htotal", "ab_htotal", "ocean_abiotic_z","all",.true.,"none",2
164-
!! "generic_abiotic_z", "ab_htotal14c", "ab_htotal14c", "ocean_abiotic_z","all",.true.,"none",2
165153
!! "generic_abiotic_z", "ab_po4", "ab_po4", "ocean_abiotic_z","all",.true.,"none",2
166154
!! "generic_abiotic_z", "ab_sio4", "ab_sio4", "ocean_abiotic_z","all",.true.,"none",2
167155

168156
!! #-- Non-CMIP Surface Fields
169157
!! "generic_abiotic", "sfc_ab_alk", "sfc_ab_alk", "ocean_abiotic","all",.true.,"none",2
170158
!! "generic_abiotic", "sfc_ab_htotal", "sfc_ab_htotal", "ocean_abiotic","all",.true.,"none",2
171-
!! "generic_abiotic", "sfc_ab_htotal14c", "sfc_ab_htotal14c", "ocean_abiotic","all",.true.,"none",2
172159
!! "generic_abiotic", "sfc_ab_po4", "sfc_ab_po4", "ocean_abiotic","all",.true.,"none",2
173160
!! "generic_abiotic", "sfc_ab_sio4", "sfc_ab_sio4", "ocean_abiotic","all",.true.,"none",2
174161
!!
@@ -269,7 +256,7 @@ module generic_abiotic
269256

270257
! Diagnostic Output IDs
271258
integer :: id_dissicabioos=-1, id_dissi14cabioos=-1
272-
integer :: id_sfc_ab_htotal=-1, id_sfc_ab_htotal14c=-1
259+
integer :: id_sfc_ab_htotal=-1
273260
integer :: id_ab_alk=-1, id_ab_po4=-1, id_ab_sio4=-1
274261
integer :: id_sfc_ab_alk=-1, id_sfc_ab_po4=-1, id_sfc_ab_sio4=-1
275262
integer :: id_ab_pco2surf=-1, id_ab_p14co2surf=-1
@@ -321,7 +308,7 @@ module generic_abiotic
321308

322309
type(CO2_dope_vector) :: CO2_dope_vec
323310
type(generic_abiotic_params) :: abiotic
324-
311+
325312
contains
326313

327314
subroutine generic_abiotic_register(tracer_list)
@@ -372,7 +359,7 @@ end subroutine generic_abiotic_register
372359

373360
!> \brief Initialize the generic abiotic module
374361
!!
375-
!! This subroutine adds the dissicabio, dissi14cabio, ab_htotal, and ab_htotal14c tracers to the list of
362+
!! This subroutine adds the dissicabio, dissi14cabio, and ab_htotal tracers to the list of
376363
!! generic tracers passed to it via utility subroutine g_tracer_add(). Adds all the parameters
377364
!! used by this module via utility subroutine g_tracer_add_param(). Allocates all work arrays used
378365
!! in the module.
@@ -460,10 +447,6 @@ subroutine generic_abiotic_register_diag(diag_list)
460447
abiotic%id_sfc_ab_htotal = register_diag_field(package_name, vardesc_temp%name, axes(1:2),&
461448
init_time, vardesc_temp%longname,vardesc_temp%units, missing_value = missing_value1)
462449

463-
vardesc_temp = vardesc("sfc_ab_htotal14c","Surface Abiotic Htotal for 14C",'h','1','s','mol kg-1','f')
464-
abiotic%id_sfc_ab_htotal14c = register_diag_field(package_name, vardesc_temp%name, axes(1:2),&
465-
init_time, vardesc_temp%longname,vardesc_temp%units, missing_value = missing_value1)
466-
467450
vardesc_temp = vardesc("ab_pco2surf","Oceanic Abiotic pCO2",'h','1','s','uatm','f')
468451
abiotic%id_ab_pco2surf = register_diag_field(package_name, vardesc_temp%name, axes(1:2),&
469452
init_time, vardesc_temp%longname,vardesc_temp%units, missing_value = missing_value1)
@@ -720,13 +703,6 @@ subroutine user_add_tracers(tracer_list)
720703
prog = .false., &
721704
init_value = abiotic%htotal_in )
722705

723-
call g_tracer_add(tracer_list,package_name, &
724-
name = 'ab_htotal14c', &
725-
longname = 'abiotic H+ ion concentration for 14C', &
726-
units = 'mol/kg', &
727-
prog = .false., &
728-
init_value = abiotic%htotal14c_in )
729-
730706
end subroutine user_add_tracers
731707

732708

@@ -762,7 +738,6 @@ subroutine generic_abiotic_update_from_source(tracer_list,Temp,Salt,sosga,rho_dz
762738
grid_tmask=grid_tmask,grid_mask_coast=mask_coast,grid_kmt=grid_kmt)
763739

764740
call g_tracer_get_values(tracer_list,'ab_htotal', 'field', abiotic%f_htotal ,isd,jsd,ntau=1)
765-
call g_tracer_get_values(tracer_list,'ab_htotal14c', 'field', abiotic%f_htotal14c ,isd,jsd,ntau=1)
766741
call g_tracer_get_values(tracer_list,'dissicabio' ,'field', abiotic%f_dissicabio ,isd,jsd,ntau=tau)
767742
call g_tracer_get_values(tracer_list,'dissi14cabio' ,'field', abiotic%f_dissi14cabio ,isd,jsd,ntau=tau)
768743

@@ -812,29 +787,22 @@ subroutine generic_abiotic_update_from_source(tracer_list,Temp,Salt,sosga,rho_dz
812787
co2star=abiotic%abco2_csurf(:,:), alpha=abiotic%abco2_alpha(:,:), &
813788
pCO2surf=abiotic%abpco2_csurf(:,:))
814789

815-
call FMS_ocmip2_co2calc(CO2_dope_vec,grid_tmask(:,:,k),&
816-
Temp(:,:,k), Salt(:,:,k), &
817-
abiotic%f_dissi14cabio(:,:,k), &
818-
abiotic%f_po4(:,:,k), &
819-
abiotic%f_sio4(:,:,k), &
820-
abiotic%f_alk(:,:,k), &
821-
abiotic%htotal14clo, abiotic%htotal14chi,&
822-
!InOut
823-
abiotic%f_htotal14c(:,:,k), &
824-
!OUT
825-
co2star=abiotic%ab14co2_csurf(:,:), alpha=abiotic%ab14co2_alpha(:,:), &
826-
pCO2surf=abiotic%abp14co2_csurf(:,:))
790+
! Update csurf and alpha based on the atmospheric 14C/12C ratio
827791

828-
! Update alpha based on the atmospheric 14C/12C ratio
792+
! The 14C surface concentration (ab14co2_csurf, 14CO2*) is proportional to the 14C surface concentration
793+
! times the ratio of the *ocean* surface carbon concentration (i.e. DI14C/DIC). The 14C solubility (ab14co2_alpha)
794+
! is proportional to abco2_alpha times the 14C to C ratio of the *atmos* carbon concentration as the
795+
! ocean carbon solubility mainly depends on temperature and the atmos partial pressure of the gas.
829796

830797
call data_override('OCN', 'delta_14catm', abiotic%delta_14catm(isc:iec,jsc:jec), model_time)
831798
do j = jsc, jec ; do i = isc, iec !{
832-
abiotic%ab14co2_alpha(i,j) = abiotic%ab14co2_alpha(i,j) * &
799+
abiotic%ab14co2_csurf(i,j) = abiotic%abco2_csurf(i,j) * &
800+
(abiotic%f_dissi14cabio(i,j,1)/(abiotic%f_dissicabio(i,j,1) + epsln))
801+
abiotic%ab14co2_alpha(i,j) = abiotic%abco2_alpha(i,j) * &
833802
(1.0 + abiotic%delta_14catm(i,j) * 1.0e-03)
834803
enddo; enddo ; !} i, j
835804

836805
call g_tracer_set_values(tracer_list,'ab_htotal', 'field',abiotic%f_htotal ,isd,jsd,ntau=1)
837-
call g_tracer_set_values(tracer_list,'ab_htotal14c','field',abiotic%f_htotal14c,isd,jsd,ntau=1)
838806

839807
call g_tracer_set_values(tracer_list,'dissicabio','alpha',abiotic%abco2_alpha ,isd,jsd)
840808
call g_tracer_set_values(tracer_list,'dissicabio','csurf',abiotic%abco2_csurf ,isd,jsd)
@@ -844,7 +812,6 @@ subroutine generic_abiotic_update_from_source(tracer_list,Temp,Salt,sosga,rho_dz
844812
call g_tracer_get_pointer(tracer_list,'dissicabio', 'field',abiotic%p_dissicabio)
845813
call g_tracer_get_pointer(tracer_list,'dissi14cabio','field',abiotic%p_dissi14cabio)
846814
call g_tracer_get_pointer(tracer_list,'ab_htotal','field',abiotic%p_htotal)
847-
call g_tracer_get_pointer(tracer_list,'ab_htotal14c','field',abiotic%p_htotal14c)
848815

849816
call g_tracer_get_pointer(tracer_list,'dissicabio','stf_gas',abiotic%stf_gas_dissicabio)
850817
call g_tracer_get_pointer(tracer_list,'dissi14cabio','stf_gas',abiotic%stf_gas_dissi14cabio)
@@ -923,11 +890,6 @@ subroutine generic_abiotic_update_from_source(tracer_list,Temp,Salt,sosga,rho_dz
923890
model_time, rmask = grid_tmask(:,:,1),&
924891
is_in=isc, js_in=jsc,ie_in=iec, je_in=jec)
925892

926-
if (abiotic%id_sfc_ab_htotal14c .gt. 0) &
927-
used = g_send_data(abiotic%id_sfc_ab_htotal14c, abiotic%f_htotal14c(:,:,1), &
928-
model_time, rmask = grid_tmask(:,:,1),&
929-
is_in=isc, js_in=jsc,ie_in=iec, je_in=jec)
930-
931893
if (abiotic%id_jdecay_di14c .gt. 0) &
932894
used = g_send_data(abiotic%id_jdecay_di14c, abiotic%jdecay_di14c(:,:,:), &
933895
model_time, rmask = grid_tmask(:,:,:), &
@@ -1010,7 +972,6 @@ subroutine generic_abiotic_set_boundary_values(tracer_list,SST,SSS,sosga,rho,ilb
1010972
call g_tracer_get_pointer(tracer_list,'dissi14cabio', 'field', dissi14cabio_field)
1011973

1012974
call g_tracer_get_values(tracer_list, 'ab_htotal', 'field', htotal_field,isd,jsd,ntau=1)
1013-
call g_tracer_get_values(tracer_list, 'ab_htotal14c', 'field', htotal14c_field,isd,jsd,ntau=1)
1014975

1015976
do j = jsc, jec ; do i = isc, iec !{
1016977
abiotic%htotallo(i,j) = abiotic%htotal_scale_lo * htotal_field(i,j,1)
@@ -1050,31 +1011,21 @@ subroutine generic_abiotic_set_boundary_values(tracer_list,SST,SSS,sosga,rho,ilb
10501011
co2star=abco2_csurf(:,:), alpha=abco2_alpha(:,:), &
10511012
pCO2surf=abiotic%abpco2_csurf(:,:))
10521013

1014+
! Update csurf and alpha based on the atmospheric 14C/12C ratio
10531015

1054-
call FMS_ocmip2_co2calc(CO2_dope_vec,grid_tmask(:,:,1), &
1055-
SST(:,:), SSS(:,:), &
1056-
dissi14cabio_field(:,:,1,tau), &
1057-
abiotic%f_po4(:,:,1), &
1058-
abiotic%f_sio4(:,:,1), &
1059-
abiotic%f_alk(:,:,1), &
1060-
abiotic%htotal14clo, abiotic%htotal14chi, &
1061-
!InOut
1062-
htotal14c_field(:,:,1), &
1063-
!Optional In
1064-
co2_calc=trim(co2_calc), &
1065-
zt=abiotic%zt(:,:,1), &
1066-
!OUT
1067-
co2star=ab14co2_csurf(:,:), alpha=ab14co2_alpha(:,:),&
1068-
pCO2surf=abiotic%abp14co2_csurf(:,:))
1016+
! The 14C surface concentration (ab14co2_csurf, 14CO2*) is proportional to the 14C surface concentration
1017+
! times the ratio of the *ocean* surface carbon concentration (i.e. DI14C/DIC). The 14C solubility (ab14co2_alpha)
1018+
! is proportional to abco2_alpha times the 14C to C ratio of the *atmos* carbon concentration as the
1019+
! ocean carbon solubility mainly depends on temperature and the atmos partial pressure of the gas.
10691020

1070-
! Update alpha based on the atmospheric 14C/12C ratio
1071-
call data_override('OCN', 'delta_14catm', delta_14catm(isc:iec,jsc:jec), model_time)
1072-
do j = jsc, jec ; do i = isc, iec !{
1073-
ab14co2_alpha(i,j) = ab14co2_alpha(i,j) * (1.0 + delta_14catm(i,j) * 1.0e-03)
1074-
enddo; enddo ; !} i, j
1021+
call data_override('OCN', 'delta_14catm', delta_14catm(isc:iec,jsc:jec), model_time)
1022+
do j = jsc, jec ; do i = isc, iec !{
1023+
ab14co2_csurf(i,j) = abco2_csurf(i,j) * &
1024+
(dissi14cabio_field(i,j,1,tau)/(dissicabio_field(i,j,1,tau) + epsln))
1025+
ab14co2_alpha(i,j) = abco2_alpha(i,j) * (1.0 + delta_14catm(i,j) * 1.0e-03)
1026+
enddo; enddo ; !} i, j
10751027

10761028
call g_tracer_set_values(tracer_list,'ab_htotal' ,'field',htotal_field,isd,jsd,ntau=1)
1077-
call g_tracer_set_values(tracer_list,'ab_htotal14c','field',htotal14c_field,isd,jsd,ntau=1)
10781029
call g_tracer_set_values(tracer_list,'dissicabio','alpha',abco2_alpha ,isd,jsd)
10791030
call g_tracer_set_values(tracer_list,'dissicabio','csurf',abco2_csurf ,isd,jsd)
10801031
call g_tracer_set_values(tracer_list,'dissi14cabio','alpha',ab14co2_alpha ,isd,jsd)

0 commit comments

Comments
 (0)