HCJung-jbnu / ROMS-TOPAZ

ROMS + TOPAZ coupling
0 stars 0 forks source link

TOPAZ runoff 추적 #9

Closed HyunChaeJung closed 1 year ago

HyunChaeJung commented 1 year ago

TOPAZ river runoff 추적

subroutine extract_coupler_values ...... type(coupler_2d_bc_type), intent(in) :: BC_struc Array_in => BC_struc%bc(BC_index)%field(BC_element)%values

do j=js0,je0 ; do i=is0,ie0 array_out(i,j) = conv * Array_in(i+i_offset,j+j_offset) enddo ; enddo ......

- data_table

"OCN", "runoff_no3_flux_ice_ocn", "DIN_PRSN_CM2","./INPUT/green_etal_regrid_v4.nc",.false.,1.0e-3 "OCN", "runoff_nh4_flux_ice_ocn", "DON_PRSN_CM2","./INPUT/green_etal_regrid_v4.nc",.false.,1.0e-3 "OCN", "runoff_fed_flux_ice_ocn", "" , "" , .false. , 0.0 "OCN", "runoff_alk_flux_ice_ocn", "" , "" , .false. , 0.48e-3 "OCN", "runoff_dic_flux_ice_ocn", "" , "" , .false. , 0.24e-3 "OCN", "runoff_lith_flux_ice_ocn", "" , "" , .false. , 13.0e-3


-         data(:,:,1) = data(:,:,1)*factor
- 담수 물성치 : 밀도 999.7 kg/m3.
- TOPAZ에 처방되는 runoff 단위는 영양염의 mol/m3 / 담수의 밀도(kg/m3) 단위가 되어야 한다.
- 모델 내부에서 trunoff * runoff 로 계산되는데 runoff = kg/m3 * m/s 담수의 밀도 * 유속 이기 때문이다.
- 그러므로 담수의 밀도를 제거하고 영양염의 밀도를 곱해주면 되는 것이다.
- 그러므로 최종 영양염 runoff 단위는 mol/m2*s
synim0816 commented 1 year ago

TOPAZ runoff

HyunChaeJung commented 1 year ago
synim0816 commented 1 year ago

src/coupler/coupler_main.F90 - coupler_init

HCJung-jbnu commented 1 year ago

atm%fields%bc(n)%field(m)%values -> ex_gas_fields_atm%bc(n)%field(m)%values 정체는?

~/Models/MOM5-TOPAZ/src/coupler$ vi flux_exchange.F90 subroutine sfc_boundary_layer ( dt, Time, Atm, Land, Ice, Land_Ice_Atmos_Boundary )

! Before using data_override a data_table must be created with the following entries: ! gridname, fieldname_code, fieldname_file, file_name, ongrid, factor.

<-------여기서 deposition data 읽어서 가는듯.

! data override for co2 to be passed to ocean (co2_flux_pcair_atm)
! atmos_co2.F90 already called: converts tr_bot passed to ocean via gas_flux
! from moist mmr to dry vmr.
  do n = 1, atm%fields%num_bcs  !{
    do m = 1, atm%fields%bc(n)%num_fields  !{
      **call data_override('ATM', atm%fields%bc(n)%field(m)%name,      &
           atm%fields%bc(n)%field(m)%values, Time, override = atm%fields%bc(n)%field(m)%override)**
         ex_gas_fields_atm%bc(n)%field(m)%override = atm%fields%bc(n)%field(m)%override
    enddo  !} m
  enddo  !} n
  do n = 1, atm%fields%num_bcs  !{
     if (atm%fields%bc(n)%use_atm_pressure) then  !{
        if (.not. atm%fields%bc(n)%field(ind_psurf)%override) then  !{
           atm%fields%bc(n)%field(ind_psurf)%values = Atm%p_surf
        endif  !}
     endif  !}
  enddo  !} n

<---------- 여기서 위에서 읽은 dop data(Atm%fields%bc(n)%field(m)%values) -> ex_gas_fields_atm%bc(n)%field(m)%values

  do n = 1, Atm%fields%num_bcs  !{
    do m = 1, Atm%fields%bc(n)%num_fields  !{
      **call put_to_xgrid (Atm%fields%bc(n)%field(m)%values, 'ATM',            &
           ex_gas_fields_atm%bc(n)%field(m)%values, xmap_sfc, remap_method=remap_method, complete=.false.)**
    enddo  !} m
  enddo  !} n

<------------- 여기서 air-sea flux, wet/dry dep, runoff flux 등등을 계산함

! Combine explicit ocean flux and implicit land flux of extra flux fields.

  ! Calculate ocean explicit flux here

  **call atmos_ocean_fluxes_calc(ex_gas_fields_atm, ex_gas_fields_ice, ex_gas_fluxes, ex_seawater)**
HCJung-jbnu commented 1 year ago

mass runoff 및 TOPAZ runoff 계산 : water mass flux SI unit : units are kg m−2 s−1.

HCJung-jbnu commented 1 year ago

Runoff 단위