/[MITgcm]/MITgcm_contrib/cg2d_bench/the_model_main.F
ViewVC logotype

Annotation of /MITgcm_contrib/cg2d_bench/the_model_main.F

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


Revision 1.1 - (hide annotations) (download)
Fri May 12 21:58:06 2006 UTC (12 years, 10 months ago) by ce107
Branch: MAIN
Initial version of CG2D benchmark code (serial and parallel) by Chris Hill

1 ce107 1.1 SUBROUTINE THE_MODEL_MAIN
2     C /==========================================================\
3     C | SUBROUTINE THE_MODEL_MAIN |
4     C | o Master controlling routine for model using the MITgcm |
5     C | UV parallel wrapper. |
6     C |==========================================================|
7     C | THE_MODEL_MAIN is invoked by the MITgcm UV parallel |
8     C | wrapper with a single integer argument "myThid". This |
9     C | variable identifies the thread number of an instance of |
10     C | THE_MODEL_MAIN. Each instance of THE_MODEL_MAIN works |
11     C | on a particular region of the models domain and |
12     C | synchronises with other instances as necessary. The |
13     C | routine has to "understand" the MITgcm parallel |
14     C | environment and the numerical algorithm. Editing this |
15     C | routine is best done with some knowledge of both aspects.|
16     C | Notes |
17     C | ===== |
18     C | C*P* comments indicating place holders for which code is |
19     C | presently being developed. |
20     C \==========================================================/
21    
22     C == Global variables ===
23     #include "SIZE.h"
24     #include "EEPARAMS.h"
25     #include "PARAMS.h"
26     #include "CG2D.h"
27     #include "MPI_INFO.h"
28    
29     C == Routine arguments ==
30     C myThid - Thread number for this instance of the routine.
31     INTEGER myThid
32    
33     C == Local variables ==
34     INTEGER I
35     Real*8 wTime1, wTime2
36     Real*8 fCount, fTime, fRate, wSetSize
37    
38     C-- Set model initial conditions
39     CALL INITIALISE( myThid )
40    
41     C-- Begin time stepping loop
42     CALL CLOC(wTime1)
43    
44     DO I=1, nTimeSteps
45     nIter = nIter0 + I
46     CALL CG2D
47     ENDDO
48    
49     CALL CLOC(wTime2)
50    
51     C CALL PLOT_FIELD_XYR8( cg2d_x , 'CG2D_X AFTER SOLVE')
52     C CALL PLOT_FIELD_XYR8( cg2d_Ax, 'CG2D_AX AFTER SOLVE')
53     C CALL PLOT_FIELD_XYR8( cg2d_b, 'CG2D_B AFTER SOLVE')
54     C CALL PLOT_FIELD_XYR8( cg2d_r, 'CG2D_R AFTER SOLVE')
55    
56     WRITE(6,*) 'Wall clock time = ', wTime2-wTime1
57     fTime = wTime2-wTime1
58     fCount = DBLE(nTImeSteps)*DBLE(cg2dMaxIters)*34.D0*DBLE(Nx)*DBLE(Ny)
59     fRate = fCount/fTime/1.D6
60     WRITE(6,*) 'PID ',myProcId,' OF ',numberOfProcs,' MFLOP/s = ', fRate
61     wSetSize=DBLE((sNx+2*OLx)*(sNy+2*OLy)*8*11)/1024./1024.
62     WRITE(6,*) 'PID ',myProcId,' OF ',numberOfProcs,' MB = ', wSetSize
63     WRITE(6,'(4(1X,I4),3F10.4)')
64     & numberOfProcs, myProcId, sNx, sNy,
65     & fTime, fRate, wSetSize
66    
67     RETURN
68     END
69    
70     C $Id: $

  ViewVC Help
Powered by ViewVC 1.1.22