Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Submodule files for GriddedComponentDriver.F90 #2837

Merged
merged 1 commit into from
May 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion generic3g/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ set(srcs
ComponentDriver.F90
ComponentDriverVector.F90
GriddedComponentDriver.F90
GriddedComponentDriver_smod.F90
GriddedComponentDriverMap.F90

MultiState.F90
Expand Down Expand Up @@ -66,6 +65,7 @@ add_subdirectory(actions)
add_subdirectory(couplers)
add_subdirectory(ComponentSpecParser)
add_subdirectory(ESMF_HConfigUtilities)
add_subdirectory(GriddedComponentDriver)

target_include_directories (${this} PUBLIC
$<BUILD_INTERFACE:${MAPL_SOURCE_DIR}/include>)
Expand Down
13 changes: 13 additions & 0 deletions generic3g/GriddedComponentDriver/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
target_sources(MAPL.generic3g PRIVATE

initialize.F90
run.F90
finalize.F90
get_states.F90
get_clock.F90
set_clock.F90
run_export_couplers.F90
run_import_couplers.F90
clock_advance.F90

)
23 changes: 23 additions & 0 deletions generic3g/GriddedComponentDriver/clock_advance.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#include "MAPL_ErrLog.h"

submodule(mapl3g_GriddedComponentDriver) clock_advance_smod
use :: mapl_ErrorHandling
use :: mapl3g_OuterMetaComponent
use :: mapl3g_MethodPhasesMapUtils
use mapl3g_CouplerMetaComponent, only: GENERIC_COUPLER_INVALIDATE, GENERIC_COUPLER_UPDATE
implicit none

contains

module subroutine clock_advance(this, rc)
class(GriddedComponentDriver), intent(inout) :: this
integer, optional, intent(out) :: rc

integer :: status

call ESMF_ClockAdvance(this%clock, _RC)

_RETURN(_SUCCESS)
end subroutine clock_advance

end submodule clock_advance_smod
36 changes: 36 additions & 0 deletions generic3g/GriddedComponentDriver/finalize.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#include "MAPL_ErrLog.h"

submodule(mapl3g_GriddedComponentDriver) finalize_smod
use :: mapl_ErrorHandling
use :: mapl3g_OuterMetaComponent
use :: mapl3g_MethodPhasesMapUtils
use mapl3g_CouplerMetaComponent, only: GENERIC_COUPLER_INVALIDATE, GENERIC_COUPLER_UPDATE
implicit none

contains

module recursive subroutine finalize(this, unusable, phase_idx, rc)
class(GriddedComponentDriver), intent(inout) :: this
class(KE), optional, intent(in) :: unusable
integer, optional, intent(in) :: phase_idx
integer, optional, intent(out) :: rc

integer :: status, user_status

associate ( &
importState => this%states%importState, &
exportState => this%states%exportState)

call ESMF_GridCompFinalize(this%gridcomp, &
importState=importState, exportState=exportState, clock=this%clock, &
phase=phase_idx, _USERRC)

end associate

call ESMF_GridCompDestroy(this%gridcomp, _RC)

_RETURN(_SUCCESS)
_UNUSED_DUMMY(unusable)
end subroutine finalize

end submodule finalize_smod
19 changes: 19 additions & 0 deletions generic3g/GriddedComponentDriver/get_clock.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#include "MAPL_ErrLog.h"

submodule(mapl3g_GriddedComponentDriver) get_clock_smod
use :: mapl_ErrorHandling
use :: mapl3g_OuterMetaComponent
use :: mapl3g_MethodPhasesMapUtils
use mapl3g_CouplerMetaComponent, only: GENERIC_COUPLER_INVALIDATE, GENERIC_COUPLER_UPDATE
implicit none

contains

module function get_clock(this) result(clock)
type(ESMF_Clock) :: clock
class(GriddedComponentDriver), intent(in) :: this

clock = this%clock
end function get_clock

end submodule get_clock_smod
20 changes: 20 additions & 0 deletions generic3g/GriddedComponentDriver/get_states.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#include "MAPL_ErrLog.h"

submodule(mapl3g_GriddedComponentDriver) get_states_smod
use :: mapl_ErrorHandling
use :: mapl3g_OuterMetaComponent
use :: mapl3g_MethodPhasesMapUtils
use mapl3g_CouplerMetaComponent, only: GENERIC_COUPLER_INVALIDATE, GENERIC_COUPLER_UPDATE
implicit none

contains

module function get_states(this) result(states)
type(MultiState) :: states
class(GriddedComponentDriver), intent(in) :: this

states = this%states
end function get_states


end submodule get_states_smod
35 changes: 35 additions & 0 deletions generic3g/GriddedComponentDriver/initialize.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include "MAPL_ErrLog.h"

submodule(mapl3g_GriddedComponentDriver) initialize_smod
use :: mapl_ErrorHandling
use :: mapl3g_OuterMetaComponent
use :: mapl3g_MethodPhasesMapUtils
use mapl3g_CouplerMetaComponent, only: GENERIC_COUPLER_INVALIDATE, GENERIC_COUPLER_UPDATE
implicit none

contains


recursive module subroutine initialize(this, unusable, phase_idx, rc)
class(GriddedComponentDriver), intent(inout) :: this
class(KE), optional, intent(in) :: unusable
integer, optional, intent(in) :: phase_idx
integer, optional, intent(out) :: rc

integer :: status, user_status

associate ( &
importState => this%states%importState, &
exportState => this%states%exportState)

call ESMF_GridCompInitialize(this%gridcomp, &
importState=importState, exportState=exportState, clock=this%clock, &
phase=phase_idx, _USERRC)

end associate

_RETURN(_SUCCESS)
_UNUSED_DUMMY(unusable)
end subroutine initialize

end submodule initialize_smod
41 changes: 41 additions & 0 deletions generic3g/GriddedComponentDriver/run.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#include "MAPL_ErrLog.h"

submodule(mapl3g_GriddedComponentDriver) run_smod
use :: mapl_ErrorHandling
use :: mapl3g_OuterMetaComponent
use :: mapl3g_MethodPhasesMapUtils
use mapl3g_CouplerMetaComponent, only: GENERIC_COUPLER_INVALIDATE, GENERIC_COUPLER_UPDATE
implicit none

contains

module recursive subroutine run(this, unusable, phase_idx, rc)
class(GriddedComponentDriver), intent(inout) :: this
class(KE), optional, intent(in) :: unusable
integer, optional, intent(in) :: phase_idx
integer, optional, intent(out) :: rc

integer :: status, user_status

_ASSERT(present(phase_idx), 'until made not optional')
call this%run_import_couplers(_RC)

associate ( &
importState => this%states%importState, &
exportState => this%states%exportState)

call ESMF_GridCompRun(this%gridcomp, &
importState=importState, &
exportState=exportState, &
clock=this%clock, &
phase=phase_idx, _USERRC)

end associate

call this%run_export_couplers(phase_idx=phase_idx, _RC)

_RETURN(_SUCCESS)
_UNUSED_DUMMY(unusable)
end subroutine run

end submodule run_smod
35 changes: 35 additions & 0 deletions generic3g/GriddedComponentDriver/run_export_couplers.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include "MAPL_ErrLog.h"

submodule(mapl3g_GriddedComponentDriver) run_export_couplers_smod
use :: mapl_ErrorHandling
use :: mapl3g_OuterMetaComponent
use :: mapl3g_MethodPhasesMapUtils
use mapl3g_CouplerMetaComponent, only: GENERIC_COUPLER_INVALIDATE, GENERIC_COUPLER_UPDATE
implicit none

contains

recursive module subroutine run_export_couplers(this, unusable, phase_idx, rc)
class(GriddedComponentDriver), intent(inout) :: this
class(KE), optional, intent(in) :: unusable
integer, optional, intent(in) :: phase_idx
integer, optional, intent(out) :: rc

integer :: status
type(ComponentDriverVectorIterator) :: iter
class(ComponentDriver), pointer :: driver

associate (e => this%export_couplers%ftn_end() )
iter = this%export_couplers%ftn_begin()
do while (iter /= e)
call iter%next()
driver => iter%of()
call driver%run(phase_idx=GENERIC_COUPLER_INVALIDATE, _RC)
end do
end associate

_RETURN(_SUCCESS)
_UNUSED_DUMMY(unusable)
end subroutine run_export_couplers

end submodule run_export_couplers_smod
32 changes: 32 additions & 0 deletions generic3g/GriddedComponentDriver/run_import_couplers.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#include "MAPL_ErrLog.h"

submodule(mapl3g_GriddedComponentDriver) run_import_couplers_smod
use :: mapl_ErrorHandling
use :: mapl3g_OuterMetaComponent
use :: mapl3g_MethodPhasesMapUtils
use mapl3g_CouplerMetaComponent, only: GENERIC_COUPLER_INVALIDATE, GENERIC_COUPLER_UPDATE
implicit none

contains

recursive module subroutine run_import_couplers(this, rc)
class(GriddedComponentDriver), intent(inout) :: this
integer, optional, intent(out) :: rc

integer :: status
type(ComponentDriverVectorIterator) :: iter
class(ComponentDriver), pointer :: driver

associate (e => this%import_couplers%ftn_end() )
iter = this%import_couplers%ftn_begin()
do while (iter /= e)
call iter%next()
driver => iter%of()
call driver%run(phase_idx=GENERIC_COUPLER_UPDATE, _RC)
end do
end associate

_RETURN(_SUCCESS)
end subroutine run_import_couplers

end submodule run_import_couplers_smod
19 changes: 19 additions & 0 deletions generic3g/GriddedComponentDriver/set_clock.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#include "MAPL_ErrLog.h"

submodule(mapl3g_GriddedComponentDriver) set_clock_smod
use :: mapl_ErrorHandling
use :: mapl3g_OuterMetaComponent
use :: mapl3g_MethodPhasesMapUtils
use mapl3g_CouplerMetaComponent, only: GENERIC_COUPLER_INVALIDATE, GENERIC_COUPLER_UPDATE
implicit none

contains

module subroutine set_clock(this, clock)
class(GriddedComponentDriver), intent(inout) :: this
type(ESMF_Clock), intent(in) :: clock

this%clock = clock
end subroutine set_clock

end submodule set_clock_smod
Loading