Skip to content

Commit

Permalink
added support for zone diag variable
Browse files Browse the repository at this point in the history
  • Loading branch information
Hydro Modeller committed Oct 12, 2021
1 parent 2059fbb commit a10620b
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 5 deletions.
2 changes: 1 addition & 1 deletion include/aed.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
#ifndef _AED_H_
#define _AED_H_

#define AED_VERSION "2.0.3"
#define AED_VERSION "2.0.4a"

#define MAX_MODELS 40

Expand Down
24 changes: 21 additions & 3 deletions src/aed_core.F90
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ MODULE aed_core
AED_REAL :: mobility
AED_REAL :: light_extinction
LOGICAL :: sheet, diag, extern, found
LOGICAL :: top, bot
LOGICAL :: top, bot, zavg
CLASS(aed_prefix_list_t),POINTER :: req => null()
END TYPE aed_variable_t
!#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Expand Down Expand Up @@ -350,6 +350,7 @@ SUBROUTINE extend_allocated_variables(pcount)

all_vars(a_vars+1:a_vars+count)%top = .false.
all_vars(a_vars+1:a_vars+count)%bot = .false.
all_vars(a_vars+1:a_vars+count)%zavg = .false.

! IF ( ALLOCATED(column) ) THEN
! ALLOCATE(tmpc(1:a_vars))
Expand Down Expand Up @@ -460,6 +461,9 @@ FUNCTION aed_create_variable(name, longname, units, place) RESULT(ret)
all_vars(ret)%diag = .false.
all_vars(ret)%extern = .false.
all_vars(ret)%found = .false.
all_vars(ret)%zavg = .false.
all_vars(ret)%top = .false.
all_vars(ret)%bot = .false.
ENDIF
IF ( ASSOCIATED(aed_cur_prefix) ) THEN
CALL extend_requested(all_vars(ret), aed_cur_prefix)
Expand Down Expand Up @@ -499,12 +503,13 @@ END FUNCTION aed_define_variable


!###############################################################################
FUNCTION aed_define_sheet_variable(name, units, longname, initial, minimum, maximum, surf) RESULT(ret)
FUNCTION aed_define_sheet_variable(name, units, longname, initial, minimum, maximum, surf, zavg) RESULT(ret)
!-------------------------------------------------------------------------------
!ARGUMENTS
CHARACTER(*),INTENT(in) :: name, longname, units
AED_REAL,INTENT(in),OPTIONAL :: initial, minimum, maximum
LOGICAL,INTENT(in),OPTIONAL :: surf
LOGICAL,INTENT(in),OPTIONAL :: zavg
!
!LOCALS
INTEGER :: ret
Expand All @@ -528,6 +533,12 @@ FUNCTION aed_define_sheet_variable(name, units, longname, initial, minimum, maxi
ELSE
all_vars(ret)%bot = .TRUE.
ENDIF

IF ( PRESENT(zavg) ) THEN
all_vars(ret)%zavg = zavg
ELSE
all_vars(ret)%zavg = .FALSE.
ENDIF
END FUNCTION aed_define_sheet_variable
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Expand Down Expand Up @@ -555,11 +566,12 @@ END FUNCTION aed_define_diag_variable


!###############################################################################
FUNCTION aed_define_sheet_diag_variable(name, units, longname, surf) RESULT(ret)
FUNCTION aed_define_sheet_diag_variable(name, units, longname, surf, zavg) RESULT(ret)
!-------------------------------------------------------------------------------
!ARGUMENTS
CHARACTER(*),INTENT(in) :: name, longname, units
LOGICAL,INTENT(in),OPTIONAL :: surf
LOGICAL,INTENT(in),OPTIONAL :: zavg
!
!LOCALS
INTEGER :: ret
Expand All @@ -581,6 +593,12 @@ FUNCTION aed_define_sheet_diag_variable(name, units, longname, surf) RESULT(ret)
all_vars(ret)%bot = .TRUE.
ENDIF

IF ( PRESENT(zavg) ) THEN
all_vars(ret)%zavg = zavg
ELSE
all_vars(ret)%zavg = .FALSE.
ENDIF

ret = n_aed_vars
END FUNCTION aed_define_sheet_diag_variable
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Expand Down
9 changes: 8 additions & 1 deletion src/aed_dummy.F90
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ MODULE aed_dummy
TYPE,extends(aed_model_data_t) :: aed_dummy_data_t
!# Variable identifiers
INTEGER :: num_v, num_dv, num_sv, num_dsv
INTEGER :: id_sine, id_vsine
INTEGER :: id_sine, id_vsine, id_za_d, id_coln
INTEGER,ALLOCATABLE :: id_dummy_v(:), id_dummy_dv(:), &
id_dummy_sv(:), id_dummy_dsv(:)
AED_REAL,ALLOCATABLE :: dm_max(:), dm_min(:)
Expand Down Expand Up @@ -187,6 +187,9 @@ SUBROUTINE aed_define_dummy(data, namlst)

data%id_vsine = aed_define_diag_variable('DUM_vol_sine', 'no units', 'DBG volume sine between 0.0 and 1.0')
data%id_sine = aed_define_sheet_diag_variable('DUM_sine', 'no units', 'DBG sine wave between 0.0 and 1.0', .FALSE.)
data%id_za_d = aed_define_sheet_diag_variable('DUM_za_d', 'no units', 'DBG averaged zone', .FALSE.)

data%id_coln = aed_locate_global('col_num')

END SUBROUTINE aed_define_dummy
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Expand Down Expand Up @@ -217,6 +220,8 @@ SUBROUTINE aed_calculate_dummy(data,column,layer_idx)
_STATE_VAR_(data%id_dummy_v(i)) = &
(sin(MOD((today+(layer_idx-1)*10.),365.)/365. * 2 * 3.1415) * scale) + offs
ENDDO

_DIAG_VAR_S_(data%id_za_d) = _STATE_VAR_S_(data%id_coln)
END SUBROUTINE aed_calculate_dummy
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Expand Down Expand Up @@ -246,6 +251,8 @@ SUBROUTINE aed_calculate_benthic_dummy(data,column,layer_idx)
_STATE_VAR_S_(data%id_dummy_sv(i)) = &
(sin(MOD((today+(layer_idx-1)*10.),365.)/365. * 2 * 3.1415) * scale) + offs
ENDDO

_DIAG_VAR_S_(data%id_za_d) = _STATE_VAR_S_(data%id_coln)
END SUBROUTINE aed_calculate_benthic_dummy
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Expand Down

0 comments on commit a10620b

Please sign in to comment.