Presentation on theme: "ESMF-based applications with the National Unified Operational Prediction Capability Tim Campbell Naval Research Laboratory."— Presentation transcript:
ESMF-based applications with the National Unified Operational Prediction Capability Tim Campbell Naval Research Laboratory
Outline Describe how NUOPC Layer is implemented in Navy ESM systems (focus on regional ESM). Hopefully, illuminate how NUOPC improves interoperability. Describe some areas that still need work. Overview of COAMPS Specialization of NUOPC Generic Components Initialization Sequencing Field Brokering Further Developments in NUOPC 2/20/132
Coupled Ocean-Atmosphere Mesoscale Prediction System 2/20/133 Regional coupled atmosphere/ocean/wave prediction system with data-assimilation.
Current Design with ESMF ATM (internal surface layer) ATM (internal surface layer) OCN WAV Model connections controlled by COAMPS_Driver ESMF_GridComp (Initialize, Run, Finalize) No brokering of inter-model connections (set by input list of coupling fields) COAMPS specific field names hardwired into models Difficult to add new models and new coupling fields COAMPS_Driver 2/20/134
Current Design with NUOPC-ESMF NUOPC_Connector (connect import state to export state, compute & execute regrid routeHandle(s)) NUOPC_Model (Multiphase Intialize, Run, Finalize) Brokering of inter-model connections (NUOPC_Connector) Coupling determined by model import fields (model specified BCs) Field names obtained from NUOPC_FieldDictionary COAMPS_Driver (derived from NUOPC_Driver) ATM (internal surface layer) ATM (internal surface layer) WAV OCN 2/20/135
Future Design with NUOPC-ESMF ATM OCN MED WAV NUOPC_Mediator (flux calculations) NUOPC_Connector (connect import state to export state, compute & execute regrid routeHandle(s)) NUOPC_Model (Multiphase Intialize, Run, Finalize) COAMPS_Driver (derived from NUOPC_Driver) ICE 2/20/136 Brokering of inter-model connections (NUOPC_Connector) Coupling determined by model import fields (model specified BCs) Field names obtained from NUOPC_FieldDictionary
Specialization from NUOPC_Driver 2/20/137 use NUOPC_Driver, only: & routine_SetServices, & type_InternalState, & label_InternalState, & label_SetModelCount, & label_SetModelPetLists, & label_SetModelServices Required Methods: SetServices – set entry points for driver methods Specializing Methods: SetModelCount – set number of models controlled by driver SetModelPetLists – set processor layout for each model SetModelServices – call into SetServices for each model, define run sequence The run sequence encodes the order in which models and connectors are executed. Knowledge of inter-model data-dependencies is required.
Specialization from NUOPC_Model 2/20/138 use NUOPC_Model, only: & routine_SetServices, & type_InternalState, & label_InternalState, & label_DataInitialize, & label_SetClock, & label_Advance Required Methods: SetServices – set entry points for model methods InitializeP0 – set version of NUOPC initialization sequence InitializeP1 – advertise import & exportable fields InitializeP2 – realize import fields & connected export fields Specializing Methods: SetClock – set internal clock DataInitialize – initialize export fields ModelAdvance – advance model in time
Specialization from NUOPC_Connector 2/20/139 use NUOPC_Connector, only: & routine_SetServices, & type_InternalState, & label_InternalState, & label_ComputeRouteHandle, & label_ExecuteRouteHandle, & label_ReleaseRouteHandle Required Methods: SetServices – set entry points for connector methods Specializing Methods: ComputeRH – create & store export-to-import data routing ExecuteRH – execute export-to-import data routing ReleaseRH – destroy export-to-import data routing
ESMF to ESMF-NUOPC Refactor code in each model’s ESMF layer – change single initialize phase into multiple phases and specializing attachable methods – change run phase to ModelAdvance method – acceptable amount of code change – resulting code is improved in that each method has a well- defined purpose that is understood by the driver Implement new driver specialized from NUOPC_Driver – new driver is more streamlined and flexible – same driver will be used in several Navy ESM systems Main challenge was in understanding the NUOPC API 2/20/1310
Initialize Sequence – Satisfying Inter- model Data Dependencies 2/20/1311 ATM OCN WAV SSH, SSC SSTWIND OCN does not require import fields to compute initial state ATM requires SST to compute initial state WAV requires WIND, SSH and SSC to compute initial state
Initialize Sequence – Satisfying Inter- model Data Dependencies Each model “knows” what is required in order to compute its initial state and export fields (e.g., WAV requires wind and currents) In DataInitialize method each model: – checks time-stamp on import fields required to compute export fields – sets “Updated” attribute on updated export fields Connector ExecuteRH method time-stamps import fields that are mapped from “Updated” export fields Driver cycles Connector ExecuteRH and model DataInitialize methods until all models declare that initialize data- dependencies are satisfied or until a dead-lock is detected. 2/20/1312
Initialize Sequence – Satisfying Inter- model Data Dependencies 2/20/1313 ATM OCN WAV SSH, SSC SSTWIND 1 1 2 2 2 2 2 2 3 3 3 3 Three steps of ExecuteRH & DataInitialize required Each model only encodes its own required data dependencies Driver executes generic sequence and detects dead-lock (no progress)
Field Brokering Pre-NUOPC enabled COAMPS: – Fields do not have attributes – Inter-model connections imposed by driver using field name – COAMPS specific field names encoded into each model NUOPC enabled COAMPS: – Fields have attributes (StandardName, Units, etc) – Inter-model connections based on StandardNames – NUOPC Field StandardNames encoded into each model – Models can query NUOPC FieldDictionary to obtain CanonicalUnits and default ShortName 2/20/1314
Further Developments in NUOPC Field Brokering – Establish a method for constructing StandardNames that uniquely identify fields – CF, CSDMS? Establish method by with the run sequence can be determined from Model attributes. – similar to the initialize phase definition 2/20/1315