[MITgcm-support] ptracer BOTTOM boundary condition
Petter Stenström
petters at kth.se
Thu May 26 03:34:29 EDT 2005
Samar/Martin,
I'm trying to implement a bottom boundary condition in gchem to simulate
resuspension of sediments. Does the time stepping issues that you discuss
apply here too, and in particular, inconsistency issues between k=Nr and
k=Nr-1?
I was not planning to use gchem_forcing_sep, but only gchem_forcing_int,
as I expect to use the same time step for all dynamics.
The sediment is the regular tracer equation, just with a settling term
added. The bottom boundary condition is of the form:
C*w_sink - diff_z*(dC/dz) = Q
where Q is the source term that gives sedimentation or resuspension
depending on the force balances at the bottom.
Have you done this before, or do you have a good idea of difficulties and
pitfalls?
/Petter
> Martin, I'd forgotten about GCHEM_SEPARATE_FORCING. Thats a possibility
> for
> setting surface a Dirichlet boundary condition, but I'd rather not mess
> with my own
> separate time stepper which may well be inconsistent with the spatial
> discretization.
>
> I have concocted some code to set surface BCs. It seems to work fine
> and, with a
> bit of tweaking, could easily be made a part of pkg/gchem. To use it
> one would set
> an #ifdef in GCHEM_OPTIONS.h. That is if the MITGCM developers agree.
>
> Samar
>
> On May 25, 2005, at 2:25 AM, Martin Losch wrote:
>
>> Samar,
>> as far as I can see (and that may not be very far), you can only
>> specify pTracer-tendencies (in ptracers_forcing_surf.F)
>> If you use the gchem package, there is the flag
>> GCHEM_SEPARATE_FORCING. If you do not set that, then you have to
>> calculate the gchemTendency in gchem_calc_tendency; an example for the
>> is the cfc-pkg, (verification/cfc_example), but again it's all
>> tendencies and you cannot prescribe the value of the tracer at the
>> surface.
>> If you set the CGHEM_SEPARATE_FORCING flag, then the ptracers are
>> updated a second time after the AB-timestep. In the routine
>> gchem_forcing_sep you can do, in principle, anyting to the ptracers
>> you like, for example, ptracer(i,j,1,bi,bj,itracer) = some-value and
>> you have your Dirichlet-BC, but unless your provide some mechanism in
>> the routine yourself, this will be inconsistent with the field for k>1
>> at this time (at the end of the timestep, gchem_forcing_sep is called
>> before do_fields_blocking_exchanges and also before do_the_model_io).
>> You'll enter the next timestep with this inconsistency at the surface.
>>
>> Martin
>>
>> On May 23, 2005, at 7:46 PM, samar khatiwala wrote:
>>
>>> Hello
>>>
>>> I would like to perform some ptracer simulations in which the
>>> ptracer concentration is prescribed at the surface. This could
>>> be a time-dependent boundary condition. Unfortunately, I don't
>>> see any simple way to use existing code to prescribe such a BC.
>>> Simply setting pTracer(...,k=1,..)=BC does not work all that well.
>>> To make this work robustly (and consistent with the time stepping) I
>>> have
>>> to intervene at multiple locations in the code to (re)set pTracer and
>>> gPtr
>>> to the BC.
>>>
>>> I was wondering if someone has figured out how to do this in a cleaner
>>> and more consistent manner. Perhaps this could be incorporated into
>>> the
>>> gchem package since it seems like a useful capability to have.
>>>
>>> Thanks
>>> Samar
>>>
>>>
>>> _______________________________________________
>>> 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
>
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-support
>
More information about the MITgcm-support
mailing list