[Mitgcm-support] Re: Top level arrays

mitgcm-support at dev.mitgcm.org mitgcm-support at dev.mitgcm.org
Wed Jul 9 15:50:25 EDT 2003


heimbach at mit.edu wrote:
> Correct.
> I had to make the forcingField0/1 arrays global

OK but see end comment.

> These changes are a result of people refusing to use
> the exf package which has all the stuff working
> (0/1 fields in common, correct exchanges after
> ctrl-variable perturbation, etc).

We found out with Curt that this is untrue. We had to *hack*
exf to do a simple thing without dates. I want to overhaul exf
before you can do away with any of the basic forcing code.

> It should be very easy to modify the customized routines
> by just removing the local field declarations.

True but misses the point. This routine allows users to
read data any which way they like. Having to customize another
source file which is meant to take a common form in order to
change the time interpolation defies the point of modularizing
that bit of code.

> I don't see where in FFIELDS.h are "odd CPP's".

#ifndef INCLUDE_EXF

means that theses arrays are always there even when
customized versions of load_external_fields.F change the
shape/size of those 0/1 arrays. J-M is upset because the size
of his runs increased dramatically when you put this in. He
has customized versions of that routine.

> Can you give an example?

There are several AIM expts that have their own versions.
Another example, for experiments where we read different
files as a function of time (e.g. turning on different
forcing for just 10 years after year 100) we have to have
a customized set of arrays and routine. Or higher order
time-interpolation for the forcing fields. etc...

Suggestion:

The best way to do what you want is move those arrays out of
FFIELDS.h into a new .h file. From the point of view of the
forward model the new .h file is only used by load_external_fields.F
but you can then put a $ifdef TAF #include new.h at the top-level.
The new .h file can then be customized as need be.

FFIELDS.h is only meant to have the flux arrays that directly enter
the model - that common block is an interface and is used meant to
be used by any other software that forces the model. e.g. coupler,
exf, load_external_forcing, sea-ice. To do this, FFIELDS.h needs
to have the same arrays in all cases and be inclusive. We can't
afford to put the time-interpolation in there.

BTW, do you have a big .h file that you add these high-level
common blocks to or are you still adding the #include's in multiple
places?

You travelled at the right time - it's f**king freezing here!

A.



More information about the MITgcm-support mailing list