An Initial Attempt at a Rewrite of Hydromod Final Project submitted for SIMG-726 Computing For...

12
An Initial Attempt at a Rewrite of Hydromod Final Project submitted for SIMG- 726 Computing For Imaging Science Adam Goodenough 2.28.2002
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    212
  • download

    0

Transcript of An Initial Attempt at a Rewrite of Hydromod Final Project submitted for SIMG-726 Computing For...

An Initial Attempt at a Rewrite of

Hydromod

Final Project submitted for SIMG-726 Computing For Imaging

ScienceAdam Goodenough

2.28.2002

What is Hydromod?

• Hydromod is an interface to the programs Hydrolight and MODTRAN

• Contains additional routines that integrate the two programs

• Originally written by Major Ron Fairbanks in 1999 to determine the impact of clouds on remotely sensed water parameters

• IDL code consists of more than 100 possibly useful routines

MODTRAN

Hydrolight

What Does it Do?

MODTRAN

Why Try to Rewrite It

• Code is difficult to follow (common blocks, commented out code)

• Interface is buggy • Usage is unintuitive• Hard to extract useful routines

for other applications• Windows jump around

Approach

• Write an interface that is independent of the algorithms

• Input parameters to algorithms defined through independent widget interfaces

• Each “module” independent of the overall program

• Scripting control that bypasses widgets• Ability to easily switch modules in and

out of the main program

Implementation with Objects

ModuleObjects

ContainerObjects

InterfaceObject

Module Objects

• Self-contained variables and routines that relate to a specific task

• Can be run independently (either interactively or scripted)

• Contain functions that are common to all modules so that they can be used by the other objects

Container Objects

• Contain a list of all of the modules currently being used

• Provide a way to efficiently access some or all of the module objects

• Contain functions that can be used to manipulate the modules

Interface Objects

• Provide a way to switch between different modules to do different tasks

• Create an overall structure for passing information between modules

• Allow the user to save/load a “project”

• Maintain a constant environment

Current Implementation

• Container Object: BaseList– Allows manipulation of module bases

• Interface Object: TabManager– Produces a tabbed window interface

• (Still needs project support)

• Module Object: SkyGen– Sets up MODTRAN to generate sky

• (Not quite complete)

• Other Module Objects: TBA

Questions??

?