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

Contents 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 - (show 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 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