Closed HyunChaeJung closed 1 year ago
TOPAZ define 시, ANA_SPFLUX, ANA_BPFLUX 삭제 -> globaldefs.h 수정
get_data.F set_data.F에서 define TOPAZ시, TOPAZ STFLUX 읽고, idTbot, idTsur set/get 삭제
mod_ncparam.F90, mod_forces.F90 에 topaz stflux 등록
~/ROMS/Nonlinear/get_data.F : . -> ocean_var_4topaz 로 전달 : varinfo_topaz.dat에 변수 등록 -> get_data.F에서 READ
SUBROUTINE get_data (ng)
....
# if defined BIOLOGY || defined SEDIMENT || defined T_PASSIVE
!!hcjung add TOPAZ 20230412
! ! Soluble Fe ! CALL get_2dfld (ng, iNLM, idSolubleFe, FRCncid(idSolubleFe,ng), &
& FRCpioFile(idSolubleFe,ng), &
& nFfiles(ng), FRC(1,ng), update(1), &
& LBi, UBi, LBj, UBj, 2, 1, &
& GRID(ng) % rmask, &
& FORCES(ng) % soluble_feG)
IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN
! ! Mineral Fe ! CALL get_2dfld (ng, iNLM, idMineralFe, FRCncid(idMineralFe,ng), &
& FRCpioFile(idMineralFe,ng), &
& nFfiles(ng), FRC(1,ng), update(1), &
& LBi, UBi, LBj, UBj, 2, 1, &
& GRID(ng) % rmask, &
& FORCES(ng) % mineral_feG)
IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN
! ! Dry deposition NO3 ! CALL get_2dfld (ng, iNLM, idDryNO3, FRCncid(idDryNO3,ng), &
& FRCpioFile(idDryNO3,ng), &
& nFfiles(ng), FRC(1,ng), update(1), &
& LBi, UBi, LBj, UBj, 2, 1, &
& GRID(ng) % rmask, &
& FORCES(ng) % drydep_no3G)
IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN
! ! Wet deposition NO3 ! CALL get_2dfld (ng, iNLM, idWetNO3, FRCncid(idWetNO3,ng), &
& FRCpioFile(idWetNO3,ng), &
& nFfiles(ng), FRC(1,ng), update(1), &
& LBi, UBi, LBj, UBj, 2, 1, &
& GRID(ng) % rmask, &
& FORCES(ng) % wetdep_no3G)
IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN
! ! Dry deposition NH4 ! CALL get_2dfld (ng, iNLM, idDryNH4, FRCncid(idDryNH4,ng), &
& FRCpioFile(idDryNH4,ng), &
& nFfiles(ng), FRC(1,ng), update(1), &
& LBi, UBi, LBj, UBj, 2, 1, &
& GRID(ng) % rmask, &
& FORCES(ng) % drydep_nh4G)
IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN
! ! Wet deposition NH4 ! CALL get_2dfld (ng, iNLM, idWetNH4, FRCncid(idWetNH4,ng), &
& FRCpioFile(idWetNH4,ng), &
& nFfiles(ng), FRC(1,ng), update(1), &
& LBi, UBi, LBj, UBj, 2, 1, &
& GRID(ng) % rmask, &
& FORCES(ng) % wetdep_nh4G)
IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN
...........
- ~/ROMS/Modules/mod_forcing.F : stf dry/set dep 변수 등록
..... !!hcjung add TOPAZ 20230407
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(:,:,:)
..... !!hcjung add 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
...... !!hcjung add TOPAZ 20230407
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
.......
- ~/ROMS/Modules/mod_ncparam.F : varinfo_topaz.dat -> topaz_var.h -> 변수 indices 등록
.... !!hcjung add topaz 20230407
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
..... !hcjung add topaz 20230407
CASE ('idSolubleFe')
idSolubleFe=varid
CASE ('idMineralFe')
idMineralFe=varid
CASE ('idDryNO3')
idDryNO3=varid
CASE ('idWetNO3')
idWetNO3=varid
CASE ('idDryNH4')
idDryNH4=varid
CASE ('idWetNH4')
idWetNH4=varid
.....
- ~/ROMS/Nonlinear/set_data.F
SUBROUTINE set_data_tile ..... !!hcjung add TOPAZ 20230407
! ! 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 .....
surface flux 관련 define 옵션
ANA_BPFLUX if analytical bottom passive tracers fluxes
define ANA_BPFLUX => dont need tracers bottom fluxes
ANA_SPFLUX if analytical surface passive tracers fluxes
define ANA_SPFLUX => dont need tracers surface fluxes
~/ROMS/Include/globaldefs.h