[MITgcm-support] diagnosing problems with the adjoint
Holly Dail
hdail at MIT.EDU
Wed Aug 12 12:15:21 EDT 2009
Thanks for the advice Matt.
I'm not using the divided adjoint, but I'll try the
autodiff_inadmode_set.F approach.
Here are the viscosities / diffusivities (chosen to be almost exactly
that used in ECCO):
viscAz=1.E-3,
viscAh=1.E4,
diffKhT=100.,
diffKzT=2.E-5,
diffKhS=100.,
diffKzS=1.E-5,
I used your advection scheme based on your earlier advice, but haven't
tried
> multiDimAdvection=.FALSE.,
Will try that too.
My time step is 3600 - again same as ECCO.
Thanks -
Holly
On Aug 12, 2009, at Aug 12 , 11:42 AM, Matthew Mazloff wrote:
> Hi Holly,
>
> Your adjoint is definitely blowing up (how many timesteps is your
> grad check....its blowing up fast). Try turning off packages when
> you run the adjoint and see if that helps. Are you using the
> divided adjoint? If so you can just change some things to false in
> data.pkg when its about to start. Turn off KPP and GMREDI and
> packages of that nature. If you are not using the divided adjoint
> then you have to use autodiff_inadmode_set.F to turn these things
> off. In this file just set
> usePtracers = .FALSE.
> useKPP = .FALSE.
> useGMREDI = .FALSE.
> useSEAICE = .FALSE.
>
> Then try again
>
> -Matt
>
> ps> out of curiosity, what viscosity and diffusivity are you trying
> to run the adjoint with?
>
> Oh, and also some of the advection schemes may not be stable. I am
> using
> multiDimAdvection=.FALSE.,
> tempAdvScheme=30,
> saltAdvScheme=30,
>
>
> pps> of course the real expert is just upstairs from you -- bug
> him :o)
>
>
>
>
> On Aug 12, 2009, at 8:14 AM, Holly Dail wrote:
>
>> Hello all -
>>
>> I'd like to use optimization with a regional North Atlantic setup.
>> As a first case, I started with the approach laid out in
>> tutorial_global_oce_optim --
>> - cost based on (1) divergence of annual mean surface temperatures
>> in the model from climatology and (2) reasonable magnitude of
>> control vector
>> - control is a time-mean heat flux correction (2-d field)
>>
>> My sensitivities are astronomical (i.e. adxx = 10^16), the gradient
>> check seems to fail (as shown below, finite difference gradients
>> seem okay, adjoint gradients not so much), and optim.x fails with
>> message 'the linesearch failed'.
>>
>> (PID.TID 0000.0001) grdchk output: procId
>> I ITIL EPOS JTILEPOS LAYER
>> X(I) X(I)+/-EPS
>> (PID.TID 0000.0001) grdchk output: FC
>> FC1 FC2 FC1-FC2/(2*EPS) ADJ GRAD(FC) 1-FDGRD/ADGRD
>> (PID.TID 0000.0001) grdchk output: 0
>> 1 56 35 1 0.000000000D+00 -.
>> 100000000D+00
>> (PID.TID 0000.0001) grdchk output: 0.261232434D
>> +02 0.261232444 D+02 0.261232340D+02 0.523051129D-04 -.
>> 115313924+108 0.100000000D+01
>>
>> I suppose this may mean the adjoint is blowing up? I've tried
>> reducing my time step and increasing viscosity and I checked that
>> my climatology & error fields are defined at all wet points; are
>> there other fixes folks have had success with? Also if you have
>> scripts that you use to diagnose your optimization runs that would
>> be really appreciated.
>>
>> Thanks -
>> Holly
>> _______________________________________________
>> MITgcm-support mailing list
>> MITgcm-support at mitgcm.org
>> http://mitgcm.org/mailman/listinfo/mitgcm-support
>
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-support
More information about the MITgcm-support
mailing list