MODULE mod_biology ! !git $Id$ !svn $Id: hypoxia_srm_mod.h 1151 2023-02-09 03:08:53Z arango $ !================================================== Hernan G. Arango === ! Copyright (c) 2002-2023 The ROMS/TOMS Group ! ! Licensed under a MIT/X style license ! ! See License_ROMS.md ! !======================================================================= ! ! ! Parameters for Hypoxia Simple Respiration Model: ! ! ! ! BioIter Maximum number of iterations to achieve convergence ! ! of the nonlinear solution. ! ! ResRate Total biological respiration rate (1/day). ! ! ! !======================================================================= ! USE mod_param ! implicit none ! ! Set biological tracer identification indices. ! integer, allocatable :: idbio(:) ! Biological tracers integer :: iOxyg ! Dissolved oxygen concentration integer :: idResR ! total respiration rate ! ! Biological parameters. ! integer, allocatable :: BioIter(:) real(r8), allocatable :: ResRate(:) ! repiration rate (1/day) ! CONTAINS ! SUBROUTINE initialize_biology ! !======================================================================= ! ! ! This routine sets several variables needed by the biology model. ! ! It allocates and assigns biological tracers indices. ! ! ! !======================================================================= ! ! Local variable declarations ! integer :: i, ic ! !----------------------------------------------------------------------- ! Set number of biological tracers. !----------------------------------------------------------------------- ! NBT=1 #if defined DIAGNOSTICS && defined DIAGNOSTICS_BIO ! !----------------------------------------------------------------------- ! Set sources and sinks biology diagnostic parameters. !----------------------------------------------------------------------- ! ! Set number of diagnostics terms. ! NDbio2d=1 NDbio3d=0 ! ! Initialize biology diagnostic indices. ! iO2fx=1 #endif ! !----------------------------------------------------------------------- ! Allocate various module variables. !----------------------------------------------------------------------- ! IF (.not.allocated(BioIter)) THEN allocate ( BioIter(Ngrids) ) Dmem(1)=Dmem(1)+REAL(Ngrids,r8) END IF IF (.not.allocated(ResRate)) THEN allocate ( ResRate(Ngrids) ) Dmem(1)=Dmem(1)+REAL(Ngrids,r8) END IF ! ! Allocate biological tracer vector. ! IF (.not.allocated(idbio)) THEN allocate ( idbio(NBT) ) Dmem(1)=Dmem(1)+REAL(NBT,r8) END IF #if defined DIAGNOSTICS && defined DIAGNOSTICS_BIO ! ! Allocate biological diagnostics vectors ! IF (.not.allocated(iDbio2)) THEN allocate ( iDbio2(NDbio2d) ) Dmem(1)=Dmem(1)+REAL(NDbio2d,r8) END IF #endif ! !----------------------------------------------------------------------- ! Initialize tracer identification indices. !----------------------------------------------------------------------- ! ic=NAT+NPT+NCS+NNS DO i=1,NBT idbio(i)=ic+i END DO ic=ic+1 iOxyg=ic ! RETURN END SUBROUTINE initialize_biology END MODULE mod_biology