[MITgcm-support] MITgcm floats.................
Jean-Michel Campin
jmc at ocean.mit.edu
Fri Apr 13 13:13:57 EDT 2012
Hi Andreas,
There are several options:
1) not changing the code, starting with nIter0=0 and to replace
the main pickup files with a set of initial conditons files
(pSurfInitFile= ..., hydrogThetaFile= ..., hydrogSaltFile= ...,
uVelInitFile= ..., vVelInitFile= ...) corresponding to what is stored
in the pickup file.
2) generate a "pickup_flt" file yourself. It's very similar to float
initial condition file (if mapIniPos2Index is set to False);
But since you were probably prepared to use the default (which is
mapIniPos2Index=T), you will have do the conversion yourself when
generating this pickup_flt file, that is to give float position in index
space instead of distances (and 1 file per tile, since this does not work
with global files).
3) modify flt_init_varia.F to read float initial conditions
even when nIter0 <> 0 and generate a modified "mitgcmuv" executable.
You will used this modified executable to start the float simulation
but will have to return to the un-modified one to continue after a restart.
4) try this trick: since flt_init_varia.F does not recognize pickupSuff,
you could try the following:
a) set nIter0=0 and pickupSuff= {the name of your pickup file} in
main parameter file "data", 3rd namelist.
b) use normal float initial conditions file.
let me know if this 4th solution does not work.
Cheers,
Jean-Michel
PS: I cc to support, might be useful for other pkg/flt users.
On Fri, Apr 13, 2012 at 02:32:27PM +1000, Andreas Klocker wrote:
> Dear Masters of the MITgcm,
>
> I just started to experiment with floats in Ryan's channel and
> noticed a little problem. I'm trying to initialize floats starting
> from a spun-up state which David produced, but after looking at
> flt_init_varia.F it seems like I can only either start with a file
> with initial float positions if nIter0=0 (which means I would have
> to spinup the model again) or start from a pickup file (which I
> obviously don't have because there were no floats in the channel so
> far):
>
> C read floats initial condition from file
> _BEGIN_MASTER(myThid)
> IF ( nIter0.EQ.0 ) THEN
> fn = flt_file
> ELSE
> WRITE(fn,'(A,I10.10)') 'pickup_flt.', nIter0
> ENDIF
> iL = ILNBLNK(fn)
> WRITE(msgBuf,'(2A)')
> & 'FLT_INIT_VARIA: reading Floats from: ', fn(1:iL)
> CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
> & SQUEEZE_RIGHT, myThid )
>
>
> What do you think is the easiest way to get around that? In the file
> with the initial float positions I can set a time (in s) when the
> floats are meant to start, but that file is only read if
> nIter0=0.... Is there an easy way to modify the Fortran code to fix
> that problem? Maybe some way to tell the model in the data.flt file
> if it is meant to look for an initial float file or a pickup?
>
> Any ideas?
>
> all the best from Oz,
> A.
More information about the MITgcm-support
mailing list