model integration with swat

Post on 30-Dec-2015

37 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Model Integration with SWAT. A publish-subscribe type system June 24, 2013 André Dozier and Olaf David. Optimization – yearly (or 2-5 year) and 30-50km resolution. IUWM BMPs. Ensure Economic Demand = Cons. Use. CGE Solver. SWAT Solver. WALL Solver. Manually add model detail. - PowerPoint PPT Presentation

TRANSCRIPT

Model Integration with SWAT

A publish-subscribe type systemJune 24, 2013

André Dozier and Olaf David

Detailed Assessment Model – daily and 1-5km resolution

SWATRead Inputs

MODFLOWSolver

MODFLOWRead Inputs

MODFLOWClose

RT3DRead Inputs

RT3DSolver

RT3DClose

SWATHRU calcs

SWATRouting

SWATOutput

SWATClose

DailyLoop

Optimization – yearly (or 2-5 year) and 30-50km resolution

WALLSolver

WALLSolver

Minimize Vulnerability and Cost

CGESolver

SWATSolver

IUWMBMPs

Few Iterations

Ensure Economic Demand = Cons. Use

Supply to WALLDemand to SWAT

Manuallyadd model

detail

Pareto optimalcurve of

managementsolutions

DayCent

Linkages

• Need to add two linking components

SWAT ModelOther Model

Linkages

• Need to add two linking components

SWAT Model

OMS Simulation

Other Model

My OMS ComponentMy Wrapper

Linkages

• Need to add two linking components

SWAT Model

OMS Simulation

Other Model

My OMS ComponentMy Wrapper

Linkages

• Need to add two linking components

SWAT Model

event

publish

OMS Simulation

subscribe

SWATrun

directionOther Model

runcomponent

finishedinform SWAT

My OMS ComponentMy Wrapper

Special OMS Component- Event names- Event inputs- Event outputs- Communication via MPI

(use blocking sends)

Linkages

• Need to add two linking components

OMS Simulation

Other Model

My OMS ComponentNormal (or special if desired) OMS component- Inputs- Outputs- Execution subroutine

My WrapperSpecial OMS Component- Event names- Event inputs- Event outputs- Communication via MPI

(use blocking sends)

Linkages

• Need to add two linking components

OMS Simulation

OMS Simulation

My OMS ComponentNormal (or special if desired) OMS component- Inputs- Outputs- Execution subroutine

My WrapperSpecial OMS Component- Event names- Event inputs- Event outputs- Communication via MPI

(use blocking sends)

Linkages

• Need to add two linking components

Simulation specifications- location(s) or NULL- Native or managed?

“Events” in SWATSWAT

StartRead InputsYear Loop Month Loop Daily Loop End EndEnd

“Events” in SWATSWAT

StartRead InputsYear Loop Month Loop Daily Loop call TopOfDailyLoop%fire() End EndEnd

“Events” in SWATSWAT

StartRead InputsYear Loop Month Loop Daily Loop call TopOfDailyLoop%fire() End EndEnd

Array of function pointers

“Events” in SWATSWAT

StartRead InputsYear Loop Month Loop Daily Loop call TopOfDailyLoop%fire() End EndEnd

mysub

othersub

Array of function pointers

To “subscribe”

subroutine mysub() print *,“my sub”end subroutine

subroutine othersub() print *,“other sub”end subroutine

“Events” in SWATSWAT

StartRead InputsYear Loop Month Loop Daily Loop call TopOfDailyLoop%fire() End EndEnd

mysub

othersub

Array of function pointers

To “subscribe”

subroutine mysub() print *,“my sub”end subroutine

subroutine othersub() print *,“other sub”end subroutine

program subscriber() use parm implicit none integer :: event_i interface subroutine mysub() end subroutine end interface interface subroutine othersub() end subroutine end interface event_i = TopOfDailyLoop%subscribe(mysub) event_i = TopOfDailyLoop%subscribe(othersub) call swat_main() end program

“Events” in SWATSWAT

StartRead InputsYear Loop Month Loop Daily Loop call TopOfDailyLoop%fire() End EndEnd

mysub

othersub

Array of function pointers

subroutine mysub() print *,“my sub”end subroutine

subroutine othersub() print *,“other sub”end subroutine

Special OMS-SWAT ComponentSWAT

StartRead InputsYear Loop Month Loop Daily Loop call TopOfDailyLoop%fire() End End call EndOfYear%fire()End

mpi_input

mpi_output

subroutine mpi_input() use parm

! Variable initialization

! MPI inputs call MPI_RECEIVE(buf, …)

! Variable dereferencing

end subroutine

subroutine mpi_output() use parm

! Variable initialization

! MPI outputs call MPI_SEND(buf, …)

! MPI wait until finished call MPI_RECEIVE(buf, …)

! Variable dereferencing

end subroutine

Special OMS-SWAT ComponentSWAT

StartRead InputsYear Loop Month Loop Daily Loop call TopOfDailyLoop%fire() End End call EndOfYear%fire()End

mpi_input

mpi_output

Waits until inputs are available from anotherOMS component

Sends output fromSWAT to OMS with the option of waiting untilthe component has finished running

My OMS ComponentMy Wrapper

Linkages

• Need to add two linking components

SWAT Model

event

publish

OMS Simulation

subscribe

SWATrun

directionOther Model

runcomponent

finishedinform SWAT

One Possible OrientationSWAT

StartRead InputsYear Loop Month Loop Daily Loop call TopOfDailyLoop%fire() End End call EndOfYear%fire()End

mpi_input

mpi_output

OMS Simulation

OMS Component(s)

OMS Component(s)

Another Possible OrientationSWAT

StartRead InputsYear Loop Month Loop Daily Loop call TopOfDailyLoop%fire() End End call EndOfYear%fire()End

mpi_output

mpi_input

OMS Simulation

OMS Component(s)

Allows parallel implementation

Yet Another Possible OrientationSWAT

StartRead InputsYear Loop Month Loop Daily Loop call TopOfDailyLoop%fire() End End call EndOfYear%fire()End

mpi_output

mpi_input

OMS Simulation

OMS Component(s)

mpi_input

mpi_output

Detailed Assessment Model – daily and 1-5km resolution

SWATRead Inputs

MODFLOWSolver

MODFLOWRead Inputs

MODFLOWClose

RT3DRead Inputs

RT3DSolver

RT3DClose

SWATHRU calcs

SWATRouting

SWATOutput

SWATClose

DailyLoop

Optimization – yearly (or 2-5 year) and 30-50km resolution

WALLSolver

WALLSolver

Minimize Vulnerability and Cost

CGESolver

SWATSolver

IUWMBMPs

Few Iterations

Ensure Economic Demand = Cons. Use

Supply to WALLDemand to SWAT

Manuallyadd model

detail

Pareto optimalcurve of

managementsolutions

DayCent

First test case

top related