/[MITgcm]/MITgcm/model/src/do_the_model_io.F
ViewVC logotype

Annotation of /MITgcm/model/src/do_the_model_io.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.15 - (hide annotations) (download)
Wed Apr 5 19:04:13 2000 UTC (24 years, 2 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint28, checkpoint27
Changes since 1.14: +6 -3 lines
Restructered the calling tree between THE_MODEL_MAIN()
and DYNAMICS(). Two calling levels have been inserted
to better split the "fixed" initialization phase from
the main time-loop for easier connectivity with the adjoint
infrastructure.

The calling tree now looks like:

   the_model_main:
      initialise_fixed()
      the_main_loop()

   the_main_loop:
      initialise_varia()
      do i=1,nIters
         forward_step()
      enddo
      forward_step()

   forward_step:
      load_external_fields()
      dynamics()
      do_the_model_io()
      solve_for_pressure()
      do_gterm_blocking_exchanges()
      write_checkpoint()

1 adcroft 1.15 C $Header: /u/gcmpack/models/MITgcmUV/model/src/do_the_model_io.F,v 1.14 2000/03/27 22:25:44 adcroft Exp $
2 cnh 1.1
3 cnh 1.11 #include "CPP_OPTIONS.h"
4 cnh 1.1
5 adcroft 1.15 SUBROUTINE DO_THE_MODEL_IO(
6     I forceOutput, myCurrentTime, myIter, myThid)
7 cnh 1.1 C /==========================================================\
8     C | SUBROUTINE DO_THE_MODEL_IO |
9     C | o Controlling routine for IO in model main time-stepping |
10     C | loop. |
11     C |==========================================================|
12     C | Many systems do not have thread safe IO so it is easier |
13     C | to lump everything together and do dumping of fields |
14     C | and updating of forcing terms in a single place. |
15     C | The approach to IO used here is that writes are only |
16     C | performed by thread 1 and that a process only writes out |
17 cnh 1.10 C | its data ( it does not know about anyone elses data!) |
18 cnh 1.1 C | Reading on the other hand is assumed to be from a file |
19     C | containing all the data for all the processes. Only the |
20     C | portion of data of interest to this process is actually |
21     C | loaded. To work well this assumes the existence of some |
22     C | reliable tool to join datasets together at the end of a |
23 cnh 1.10 C | run - see joinds.p |
24 cnh 1.1 C \==========================================================/
25 adcroft 1.12 IMPLICIT NONE
26 cnh 1.1
27     C == Global variables ===
28     #include "SIZE.h"
29     #include "EEPARAMS.h"
30     #include "PARAMS.h"
31     #include "DYNVARS.h"
32     #include "CG2D.h"
33 adcroft 1.13 #ifdef ALLOW_KPP
34     #include "KPPMIX.h"
35     #endif
36 cnh 1.1
37 cnh 1.3 LOGICAL DIFFERENT_MULTIPLE
38     EXTERNAL DIFFERENT_MULTIPLE
39    
40 cnh 1.1 C == Routine arguments ==
41 adcroft 1.15 C forceOutput - If .TRUE. then force I/O, indepenent of other tests
42 cnh 1.1 C myThid - Thread number for this instance of the routine.
43     C myIter - Iteration number
44 cnh 1.3 C myCurrentTime - Current time of simulation ( s )
45 adcroft 1.15 LOGICAL forceOutput
46 cnh 1.1 INTEGER myThid
47     INTEGER myIter
48 adcroft 1.13 _RL myCurrentTime
49 cnh 1.1
50     C == Local variables ==
51    
52 cnh 1.10 C-- Generaly only thread 1 does IO here. It can not start until
53     C-- all threads fields are ready.
54 cnh 1.6 IF (
55 cnh 1.10 & DIFFERENT_MULTIPLE(dumpFreq,myCurrentTime,
56     & myCurrentTime-deltaTClock)
57 cnh 1.6 & ) THEN
58    
59 cnh 1.3 _BARRIER
60 cnh 1.1
61 cnh 1.3 C-- Write "text-plots" of certain fields
62 cnh 1.10 CALL PLOT_FIELD_XYZRL( uVel , 'Current uVel ' ,
63     & Nr, myIter, myThid )
64     CALL PLOT_FIELD_XYZRL( vVel , 'Current vVel ' ,
65     & Nr, myIter, myThid )
66     CALL PLOT_FIELD_XYZRL( theta, 'Current theta ' ,
67     & Nr, myIter, myThid )
68     CALL PLOT_FIELD_XYRL( cg2d_x, 'Current cg2d_x ' ,
69     & myIter, myThid )
70 adcroft 1.13
71     #ifdef ALLOW_KPP
72     IF (KPPmixingMaps) THEN
73     CALL PLOT_FIELD_XYRL ( KPPhbl , 'KPPhbl' ,
74     & myIter, myThid )
75     CALL PLOT_FIELD_XYZRL ( KPPviscAz , 'KPPviscAz' ,
76     & Nr, myIter, myThid )
77     CALL PLOT_FIELD_XYZRL ( KPPdiffKzT, 'KPPdiffKzT',
78     & Nr, myIter, myThid )
79     CALL PLOT_FIELD_XYZRL ( KPPghat , 'KPPghat' ,
80     & Nr, myIter, myThid )
81     ENDIF
82     #endif
83 cnh 1.3
84     ENDIF
85    
86     C-- Write model state to binary file
87 adcroft 1.15 CALL WRITE_STATE( forceOutput, myCurrentTime, myIter, myThid )
88 cnh 1.5
89 cnh 1.1 C
90     RETURN
91     END
92    

  ViewVC Help
Powered by ViewVC 1.1.22