1 |
! $Header: /u/gcmpack/MITgcm_contrib/PRM/prmtop_mod.dir/src/main.F90,v 1.1 2005/04/05 19:57:02 cnh Exp $ |
2 |
! $Name: $ |
3 |
|
4 |
! Top level ESMF based driver for PRM embedded model configuration |
5 |
! A PRM configuration consists of one coarse grid model configuration |
6 |
! and one or more fine grid configurations that span a subset of the |
7 |
! physical grid in the coarse grid configuration at higher resolution. |
8 |
! In addition special pieces of code that couple the coarse model |
9 |
! to the fine model and the fine model to the coarse model are part |
10 |
! of the setup. Each of these pieces (the coarse grid model, the fine |
11 |
! grid models and the coarse to fine and fine to coarse coupling code) |
12 |
! is called a component. The setup is controlled by a top-level file of |
13 |
! settings that specifies the number of components to create and |
14 |
! associates names with those components that are used to distinguish |
15 |
! their roles. |
16 |
! |
17 |
|
18 |
! == Global data == |
19 |
! PRMTop :: top level module for PRM driver. |
20 |
! EEsmf_Mod :: ESMF extras module |
21 |
USE PRMTop |
22 |
USE EEsmf_Mod |
23 |
|
24 |
! == Local data == |
25 |
! theComponents :: List of "components" that make up a |
26 |
! :: PRM configuration. |
27 |
TYPE( EEsmfComponentList ), POINTER :: theComponents |
28 |
|
29 |
! Boot up ESMF |
30 |
! Calls ESMF initialization and reads in settings from |
31 |
! top-level startup file. |
32 |
! This creates the default VM which spans the entire set |
33 |
! of PET's (processors) available. |
34 |
CALL EEsmfBoot( 'eesmf.rc' ) |
35 |
|
36 |
! Setup the components. Returns an EEsmfComponentList |
37 |
! variable containing all the components that make up |
38 |
! the PRM configuration. These will be partitioned over |
39 |
! the PET's according to the PRM comfiguration file. |
40 |
CALL ComponentsInit( theComponents ) |
41 |
|
42 |
! Run the components. Pass down the component list that |
43 |
! contains all the components that are to be executed in this |
44 |
! PRM configuration. |
45 |
CALL ComponentsRun( theComponents ) |
46 |
|
47 |
! Clean up as needed |
48 |
! Deallocate memory and write out remaining I/O. |
49 |
CALL ComponentsFinalize( theComponents ) |
50 |
|
51 |
END |