/[MITgcm]/MITgcm/pkg/flt/flt_main.F
ViewVC logotype

Contents of /MITgcm/pkg/flt/flt_main.F

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


Revision 1.8 - (show annotations) (download)
Wed Dec 22 21:25:18 2010 UTC (13 years, 5 months ago) by jahn
Branch: MAIN
CVS Tags: checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62w, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint63, checkpoint63a, checkpoint63b
Changes since 1.7: +2 -1 lines
add FLT_SIZE.h

1 C $Header: /u/gcmpack/MITgcm/pkg/flt/flt_main.F,v 1.7 2010/12/22 21:24:58 jahn Exp $
2 C $Name: $
3
4 #include "FLT_OPTIONS.h"
5
6 C ==================================================================
7 C
8 C Float Package for the MIT Model
9 C
10 C Main Routines:
11 C
12 C o flt_main - Integrates the floats forward and stores
13 C positions and vertical profiles at specific
14 C time intervals.
15 C o flt_readparms - Read parameter file
16 C o flt_init_fixed - Initialise fixed
17 C o flt_init_varia - Initialise the floats
18 C o flt_restart - Writes restart data to file (=> renamed: flt_write_pickup)
19 C
20 C Second Level Subroutines:
21 C
22 C o flt_runga2 - Second order Runga-Kutta inetgration (default)
23 C o flt_exchg - Does a new distribution of floats over tiles
24 C after every integration step.
25 C o flt_up - moves float to the surface (if flag is set)
26 C and stores profiles to file
27 C o flt_down - moves float to its target depth (if flag is set)
28 C o flt_traj - stores positions and data to file
29 C o flt_interp_linear - contains blinear interpolation scheme
30 C o flt_mapping - contains mapping functions & subroutine
31 C o flt_mdsreadvector - modified mdsreadvector to read files
32 C
33 C ToDo:
34 C
35 C o avoid exchanges when arrays empty
36 C o 3D advection of floats
37 C
38 C ==================================================================
39 C
40 C Documentation:
41 C
42 C To be made....
43 C
44 C
45 C started: Arne Biastoch abiastoch@ucsd.edu 10-Jan-2000
46 C (adopted from version written by Detlef Stammer
47 C for the old model code)
48 C
49 C changed: Arne Biastoch abiastoch@ucsd.edu 21-JUN-2001
50 C
51 C ==================================================================
52
53
54 SUBROUTINE FLT_MAIN (
55 I myTime, myIter, myThid )
56
57 C ==================================================================
58 C SUBROUTINE FLT_MAIN
59 C ==================================================================
60 C o This routine steps floats forward in time and samples the model
61 C state at float position every flt_int_traj time steps.
62 C Also moves the float up and down and samples vertical profiles.
63 C
64 C o Uses 2nd or fourth order runga-kutta
65 C o Spatial interpolation is bilinear close to boundaries and otherwise
66 C a polynomial interpolation.
67 C o Particles are kept in grid space (with position of dp taken as
68 C x(south), y(east) grid cell point)
69 C o Calls profile every flt_int_prof time steps; in that event the
70 C profile over the whole water column is written to file and the
71 C float might be moved upwards to the surface (depending on its
72 C configuration).
73 C ==================================================================
74
75 C !USES:
76 IMPLICIT NONE
77
78 #include "EEPARAMS.h"
79 #include "SIZE.h"
80 #include "FLT_SIZE.h"
81 #include "FLT.h"
82
83 C == routine arguments ==
84 C myThid - thread number for this instance of the routine.
85 _RL myTime
86 INTEGER myIter, myThid
87
88 C integration of the float trajectories
89
90 #ifdef FLT_SECOND_ORDER_RUNGE_KUTTA
91 c WRITE(0,*) ' bf call flt_runga2', myIter
92 CALL TIMER_START('FLOATS RUNGA2 [FLT LOOP]',myThid)
93 CALL FLT_RUNGA2( myTime, myIter, myThid )
94 CALL TIMER_STOP ('FLOATS RUNGA2 [FLT LOOP]',myThid)
95 c WRITE(0,*) ' af call flt_runga2', myIter
96 #else
97 c WRITE(0,*) ' bf call flt_runga4', myIter
98 CALL TIMER_START('FLOATS RUNGA4 [FLT LOOP]',myThid)
99 CALL FLT_RUNGA4( myTime, myIter, myThid )
100 CALL TIMER_STOP ('FLOATS RUNGA4 [FLT LOOP]',myThid)
101 c WRITE(0,*) ' af call flt_runga4', myIter
102 #endif
103
104 C check if exchanges between tiles are necessary
105
106 c IF (Nx .NE. sNx .OR. Ny .NE. sNy) THEN
107 CALL TIMER_START('FLOATS EXCHG [FLT LOOP]',myThid)
108 #ifdef ALLOW_EXCH2
109 CALL FLT_EXCH2( myTime, myIter, myThid )
110 #else
111 CALL FLT_EXCHG( myTime, myIter, myThid )
112 #endif
113 CALL TIMER_STOP ('FLOATS EXCHG [FLT LOOP]',myThid)
114 c ENDIF
115
116 C store profiles every flt_int_prof time steps:
117 C and move floats up and down
118
119 IF ( MOD(myTime,flt_int_prof).EQ.0. ) THEN
120 CALL TIMER_START('FLOATS UP [FLT LOOP]',myThid)
121 CALL FLT_UP( myTime, myIter, myThid )
122 CALL TIMER_STOP ('FLOATS UP [FLT LOOP]',myThid)
123 ENDIF
124
125 c WRITE(0,*) ' bf call flt_down', myIter
126 CALL TIMER_START('FLOATS DOWN [FLT LOOP]',myThid)
127 CALL FLT_DOWN( myTime, myIter, myThid )
128 CALL TIMER_STOP ('FLOATS DOWN [FLT LOOP]',myThid)
129 c WRITE(0,*) ' af call flt_down', myIter
130
131 C store particles every flt_int_traj timesteps:
132
133 IF ( MOD(myTime,flt_int_traj).EQ.0. ) THEN
134 c WRITE(0,*) ' bf call flt_traj', myIter
135 CALL TIMER_START('FLOATS TRAJ [FLT LOOP]',myThid)
136 CALL FLT_TRAJ( myTime, myIter, myThid )
137 CALL TIMER_STOP ('FLOATS TRAJ [FLT LOOP]',myThid)
138 c WRITE(0,*) ' af call flt_traj', myIter
139 ENDIF
140
141 RETURN
142 END

  ViewVC Help
Powered by ViewVC 1.1.22