[MITgcm-devel] exf_set_uv.F

Patrick Heimbach heimbach at MIT.EDU
Wed Mar 24 16:11:20 EST 2004


That's definetely NOT a good way to go.
We then start to mix up CPP options and Fortran code.
This is already causing problems for PTRACERS_OPTIONS.h
where, at least for the adjoint, 
you start having to include both 
PTRACERS_OPTIONS.h and PTRACERS.h
where otherise you'd just need PTRACERS.h

So I'd veto your suggestion.
Unfortunately, Germany hs no permanent 
status / veto power though ;o)

-p.



Quoting Alistair Adcroft <adcroft at MIT.EDU>:

> Put the dimension in EXF_OPTIONS.h as a CPP macro (like the number of
> tracers in PTRACERS.h).
> That way it's included where you need it and can be set to 1 with an #ifndef
> 
> Don't like including it into SIZE.h...
> 
> A.
> --
> Dr Alistair Adcroft            http://www.mit.edu/~adcroft
> MIT Climate Modeling Initiative        tel: (617) 253-5938
> EAPS 54-1523,  77 Massachusetts Ave,  Cambridge,  MA,  USA
> 
> -----Original Message-----
> From: mitgcm-devel-bounces at mitgcm.org
> [mailto:mitgcm-devel-bounces at mitgcm.org] On Behalf Of Patrick Heimbach
> Sent: Wednesday, March 24, 2004 11:55 AM
> To: mitgcm-devel at mitgcm.org
> Subject: [MITgcm-devel] exf_set_uv.F
> 
> 
> The placement of 
> #ifdef USE_EXF_INTERPOLATION
> at the very top of S/R exf_set_uv.F
> even before the SUBROUTINE statement
> can be problematic on some compilers
> or for some optimization levels/options
> (e.g. for -of osf1_alpha_f77 )
> 
> Our common(?) practise is to put the
> #ifdef statement
> after the declaration of S/R arguments
> which leaves just an empty S/R body.
> 
> In the present case there's a problem however,
> since an array size MAX_LAT_INC is defined in exf_param.h
> which is only used when USE_EXF_INTERPOLATION defined,
> but is needed to dimension arrays in S/R arguments.
> Thus, default value should be MAX_LAT_INC = 1
> and is should be customized in a header file.
> (right now it's hard coded to 250 in exf_param.h)
> Not sure what a good/clean solution is.
> 
> One could be the following in exf_param.h
> #ifndef USE_EXF_INTERPOLATION
>        integer MAX_LAT_INC
>        parameter(MAX_LAT_INC = 1)
> #else
> c for lat interpolation, arraysize currently set to 250 max data values
>        integer MAX_LAT_INC
>        parameter(MAX_LAT_INC = 250)
>       _RL ustress_lon0, ustress_lon_inc
>       _RL ustress_lat0, ustress_lat_inc(MAX_LAT_INC)
> ...ETC...
> 
> Another one would be to have SIZE.h include
> #ifdef ALLOW_PKG
> # include "PKG_SIZE.h"
> #endif
> 
> I don't like this array dimension in exf_param.h
> Any suggestions?
> 
> Cheers
> -p.
> 
> 
> _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
> Patrick Heimbach       Massachusetts Institute of Technology
> FON: +1/617/253-5259                      EAPS, Room 54-1518
> FAX: +1/617/253-4464                 77 Massachusetts Avenue
> mailto:heimbach at mit.edu                   Cambridge MA 02139
> http://www.mit.edu/~heimbach/                         U.S.A.
> 
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org http://dev.mitgcm.org/mailman/listinfo/mitgcm-devel
> 
> 
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://dev.mitgcm.org/mailman/listinfo/mitgcm-devel
> 


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Patrick Heimbach       Massachusetts Institute of Technology
FON: +1/617/253-5259                      EAPS, Room 54-1518
FAX: +1/617/253-4464                 77 Massachusetts Avenue
mailto:heimbach at mit.edu                   Cambridge MA 02139
http://www.mit.edu/~heimbach/                         U.S.A.




More information about the MITgcm-devel mailing list