HCJung-jbnu / ROMS-TOPAZ

ROMS + TOPAZ coupling
0 stars 0 forks source link

ROMS-TOPAZ surface flux 처방 #8

Closed HyunChaeJung closed 1 year ago

HyunChaeJung commented 1 year ago

surface flux 관련 define 옵션

HyunChaeJung commented 1 year ago

TOPAZ surface flux data

HyunChaeJung commented 1 year ago

ROMS 수정

!!hcjung add TOPAZ 20230412

ifdef TOPAZ

ifndef ANA_SPFLUX

! ! Soluble Fe ! CALL get_2dfld (ng, iNLM, idSolubleFe, FRCncid(idSolubleFe,ng), &

if defined PIO_LIB && defined DISTRIBUTE

 &                 FRCpioFile(idSolubleFe,ng),                       &

endif

 &                 nFfiles(ng), FRC(1,ng), update(1),              &
 &                 LBi, UBi, LBj, UBj, 2, 1,                       &

ifdef MASKING

 &                 GRID(ng) % rmask,                               &

endif

 &                 FORCES(ng) % soluble_feG)
   IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN

! ! Mineral Fe ! CALL get_2dfld (ng, iNLM, idMineralFe, FRCncid(idMineralFe,ng), &

if defined PIO_LIB && defined DISTRIBUTE

 &                 FRCpioFile(idMineralFe,ng),                       &

endif

 &                 nFfiles(ng), FRC(1,ng), update(1),              &
 &                 LBi, UBi, LBj, UBj, 2, 1,                       &

ifdef MASKING

 &                 GRID(ng) % rmask,                               &

endif

 &                 FORCES(ng) % mineral_feG)
   IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN

! ! Dry deposition NO3 ! CALL get_2dfld (ng, iNLM, idDryNO3, FRCncid(idDryNO3,ng), &

if defined PIO_LIB && defined DISTRIBUTE

 &                 FRCpioFile(idDryNO3,ng),                       &

endif

 &                 nFfiles(ng), FRC(1,ng), update(1),              &
 &                 LBi, UBi, LBj, UBj, 2, 1,                       &

ifdef MASKING

 &                 GRID(ng) % rmask,                               &

endif

 &                 FORCES(ng) % drydep_no3G)
   IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN

! ! Wet deposition NO3 ! CALL get_2dfld (ng, iNLM, idWetNO3, FRCncid(idWetNO3,ng), &

if defined PIO_LIB && defined DISTRIBUTE

 &                 FRCpioFile(idWetNO3,ng),                       &

endif

 &                 nFfiles(ng), FRC(1,ng), update(1),              &
 &                 LBi, UBi, LBj, UBj, 2, 1,                       &

ifdef MASKING

 &                 GRID(ng) % rmask,                               &

endif

 &                 FORCES(ng) % wetdep_no3G)
   IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN

! ! Dry deposition NH4 ! CALL get_2dfld (ng, iNLM, idDryNH4, FRCncid(idDryNH4,ng), &

if defined PIO_LIB && defined DISTRIBUTE

 &                 FRCpioFile(idDryNH4,ng),                       &

endif

 &                 nFfiles(ng), FRC(1,ng), update(1),              &
 &                 LBi, UBi, LBj, UBj, 2, 1,                       &

ifdef MASKING

 &                 GRID(ng) % rmask,                               &

endif

 &                 FORCES(ng) % drydep_nh4G)
   IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN

! ! Wet deposition NH4 ! CALL get_2dfld (ng, iNLM, idWetNH4, FRCncid(idWetNH4,ng), &

if defined PIO_LIB && defined DISTRIBUTE

 &                 FRCpioFile(idWetNH4,ng),                       &

endif

 &                 nFfiles(ng), FRC(1,ng), update(1),              &
 &                 LBi, UBi, LBj, UBj, 2, 1,                       &

ifdef MASKING

 &                 GRID(ng) % rmask,                               &

endif

 &                 FORCES(ng) % wetdep_nh4G)
   IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN

endif

else

ifndef ANA_SPFLUX

...........

- ~/ROMS/Modules/mod_forcing.F : stf dry/set dep 변수 등록

..... !!hcjung add TOPAZ 20230407

if defined TOPAZ

      real(r8), pointer :: soluble_fe(:,:)
      real(r8), pointer :: soluble_feG(:,:,:)
      real(r8), pointer :: mineral_fe(:,:)
      real(r8), pointer :: mineral_feG(:,:,:)
      real(r8), pointer :: drydep_no3(:,:)
      real(r8), pointer :: drydep_no3G(:,:,:)
      real(r8), pointer :: wetdep_no3(:,:)
      real(r8), pointer :: wetdep_no3G(:,:,:)
      real(r8), pointer :: drydep_nh4(:,:)
      real(r8), pointer :: drydep_nh4G(:,:,:)
      real(r8), pointer :: wetdep_nh4(:,:)
      real(r8), pointer :: wetdep_nh4G(:,:,:)

endif

..... !!hcjung add TOPAZ

if defined TOPAZ

  allocate ( FORCES(ng) % soluble_fe(LBi:UBi,LBj:UBj) )
  Dmem(ng)=Dmem(ng)+size2d
  allocate ( FORCES(ng) % soluble_feG(LBi:UBi,LBj:UBj,2) )
  Dmem(ng)=Dmem(ng)+size2d*2
  allocate ( FORCES(ng) % mineral_fe(LBi:UBi,LBj:UBj) )
  Dmem(ng)=Dmem(ng)+size2d
  allocate ( FORCES(ng) % mineral_feG(LBi:UBi,LBj:UBj,2) )
  Dmem(ng)=Dmem(ng)+size2d*2
  allocate ( FORCES(ng) % drydep_no3(LBi:UBi,LBj:UBj) )
  Dmem(ng)=Dmem(ng)+size2d
  allocate ( FORCES(ng) % drydep_no3G(LBi:UBi,LBj:UBj,2) )
  Dmem(ng)=Dmem(ng)+size2d*2
  allocate ( FORCES(ng) % wetdep_no3(LBi:UBi,LBj:UBj) )
  Dmem(ng)=Dmem(ng)+size2d
  allocate ( FORCES(ng) % wetdep_no3G(LBi:UBi,LBj:UBj,2) )
  Dmem(ng)=Dmem(ng)+size2d*2
  allocate ( FORCES(ng) % drydep_nh4(LBi:UBi,LBj:UBj) )
  Dmem(ng)=Dmem(ng)+size2d
  allocate ( FORCES(ng) % drydep_nh4G(LBi:UBi,LBj:UBj,2) )
  Dmem(ng)=Dmem(ng)+size2d*2
  allocate ( FORCES(ng) % wetdep_nh4(LBi:UBi,LBj:UBj) )
  Dmem(ng)=Dmem(ng)+size2d
  allocate ( FORCES(ng) % wetdep_nh4G(LBi:UBi,LBj:UBj,2) )
  Dmem(ng)=Dmem(ng)+size2d*2

endif

...... !!hcjung add TOPAZ 20230407

ifdef TOPAZ

        FORCES(ng) % soluble_fe(i,j) = IniVal
        FORCES(ng) % soluble_feG(i,j,1) = IniVal
        FORCES(ng) % soluble_feG(i,j,2) = IniVal
        FORCES(ng) % mineral_fe(i,j) = IniVal
        FORCES(ng) % mineral_feG(i,j,1) = IniVal
        FORCES(ng) % mineral_feG(i,j,2) = IniVal
        FORCES(ng) % drydep_no3(i,j) = IniVal
        FORCES(ng) % drydep_no3G(i,j,1) = IniVal
        FORCES(ng) % drydep_no3G(i,j,2) = IniVal
        FORCES(ng) % wetdep_no3(i,j) = IniVal
        FORCES(ng) % wetdep_no3G(i,j,1) = IniVal
        FORCES(ng) % wetdep_no3G(i,j,2) = IniVal
        FORCES(ng) % drydep_nh4(i,j) = IniVal
        FORCES(ng) % drydep_nh4G(i,j,1) = IniVal
        FORCES(ng) % drydep_nh4G(i,j,2) = IniVal
        FORCES(ng) % wetdep_nh4(i,j) = IniVal
        FORCES(ng) % wetdep_nh4G(i,j,1) = IniVal
        FORCES(ng) % wetdep_nh4G(i,j,2) = IniVal

endif

.......

- ~/ROMS/Modules/mod_ncparam.F : varinfo_topaz.dat -> topaz_var.h -> 변수 indices 등록

.... !!hcjung add topaz 20230407

ifdef TOPAZ

  integer  :: idSolubleFe   ! dust deposition to iron
  integer  :: idMineralFe   ! dust deposition to lith
  integer  :: idDryNO3      ! dry dep no3
  integer  :: idWetNO3      ! wet dep no3
  integer  :: idDryNH4      ! dry dep nh4
  integer  :: idWetNH4      ! wet dep nh4

endif

..... !hcjung add topaz 20230407

ifdef TOPAZ

      CASE ('idSolubleFe')
          idSolubleFe=varid
      CASE ('idMineralFe')
          idMineralFe=varid
      CASE ('idDryNO3')
          idDryNO3=varid
      CASE ('idWetNO3')
          idWetNO3=varid
      CASE ('idDryNH4')
          idDryNH4=varid
      CASE ('idWetNH4')
          idWetNH4=varid

endif

.....

- ~/ROMS/Nonlinear/set_data.F

SUBROUTINE set_data_tile ..... !!hcjung add TOPAZ 20230407

if defined TOPAZ

! ! Soluble Fe ! CALL set_2dfld_tile (ng, tile, iNLM, idSolubleFe, & & LBi, UBi, LBj, UBj, & & FORCES(ng)%soluble_feG, & & FORCES(ng)%soluble_fe, & & update) IF (FoundError(exit_flag, NoError, LINE, MyFile)) RETURN

! ! Mineral Fe ! CALL set_2dfld_tile (ng, tile, iNLM, idMineralFe, & & LBi, UBi, LBj, UBj, & & FORCES(ng)%mineral_feG, & & FORCES(ng)%mineral_fe, & & update) IF (FoundError(exit_flag, NoError, LINE, MyFile)) RETURN .....