[MITgcm-devel] proper forcing for seaice adjoint
Martin Losch
Martin.Losch at awi.de
Wed Apr 28 05:04:15 EDT 2010
Dear adjoint seaice-modelers,
you have probably thought about this much more that I have and will consider this baby stuff, but I have the impression (without trying it out) that there is only one specific set of forcing fields (in EXF_OPTIONS.h) and control variables possible (in ECCO_CPPOPTIONS.h) if you want to include the seaice model. This combination is:
#define ALLOW_ATM_TEMP
#define ALLOW_ATM_WIND
#define ALLOW_DOWNWARD_RADIATION
#define ALLOW_RUNOFF
and
#define ALLOW_ATEMP_CONTROL
#define ALLOW_AQH_CONTROL
#define ALLOW_PRECIP_CONTROL
#define ALLOW_SWDOWN_CONTROL
#define ALLOW_LWDOWN_CONTROL
#define ALLOW_UWIND_CONTROL
#define ALLOW_VWIND_CONTROL
and maybe these
C#define ALLOW_SNOWPRECIP_CONTROL
C#define ALLOW_APRESSURE_CONTROL
C#undef ALLOW_RUNOFF_CONTROL
If you have ALLOW_ATM_WIND undefined (perfectly allowed in forward runs even with seaice and used in global_ocean.cs32x15/code_ad), the model expects wind stress, then computes wind from windstress and uses that in the bulk formula, but then *WIND_CONTROL does not make sense, because it is added before wind is actually computed. I think that this situation should/could be ruled out by a configuration check, correct? global_ocean.cs32x15/code_ad uses *STRESS_CONTROL, which adds the control variables after the wind and bulk formulae computations, so that's OK.
But if you turn on the seaice model in global_ocean.cs32x15/code_ad, the control variables U/VSTRESS, HFLUX,SFLUX are applied in exf_getforcing, but then the corresponding fluxes (fu,fv, qnet,qsw,empmr) are again modified by the seaice model: the seaice model overrules the control variables. This should not be allowed. The alternative should be calling
c Get values of the surface flux anomalies.
call exf_getsurfacefluxes( mytime, myiter, mythid )
after/at the end of seaice_model, but then the seaice model would be completely taken out of the dependency flow, and no adjoint would be necessary. Therefore I suggest, that we do not allow this combination (seaice+control variables U/VSTRESS, HFLUX,SFLUX), either?
Do you agree with my interpretation of the situation? Should we (I) add code (in ctrl_check.F) that prohibits the above combinations?
Martin
More information about the MITgcm-devel
mailing list