[FLASH-USERS] Bug in Ionize module?
Suoqing Ji
suoqing at physics.ucsb.edu
Tue Oct 18 17:52:03 EDT 2016
Hi Klaus,
Thanks for your detailed response!
In addition, I was able to solve Eqi by directly calling Ionize_equil.F90 (as what’s done in Simulation_initBlock.F90 in NeiTest problem).
Best wishes,
--
Suoqing JI
Ph.D Candidate
Department of Physics
University of California, Santa Barbara
http://web.physics.ucsb.edu/~suoqing
> On Oct 18, 2016, at 2:47 PM, Klaus Weide <klaus at flash.uchicago.edu> wrote:
>
> On Mon, 17 Oct 2016, Suoqing Ji wrote:
>
>> Hi,
>>
>> I’m looking at the Ionize module and suspect there might be a bug in IonizeMain/Eqi/nei.F90 (perhaps this file is out of date). I think the line
>>
>> xout(jj2) = xout2(i)/selnel
>>
>> should be
>>
>> xout(jj2) = xout2(i) * selnel(jj2)
>>
>> Even from the view of code grammar, selnel is defined as a single real number, but it refers to an array ion_xfrac when nei.F90 is called from Ioinze.F90.
>
> There are two versions of the file nei.F90 in the Ionize unit:
>
> IonizeMain/Eqi/nei.F90
> IonizeMain/Nei/nei.F90
>
> Each contains an implementation of
>
> subroutine neimn
>
> but their interfaces are incompatible with each other. In particular,
> compare declarations for the last dummy argument:
>
> IonizeMain/Nei/nei.F90: real, intent(in) :: xfrac(*) ! an array
> IonizeMain/Eqi/nei.F90: real, intent(in) :: selnel ! a scalar
>
> The declaration in IonizeMain/Nei matches the call in Ionize.F90, but the
> one in IonizeMain/Eqi doesn't (as you have found).
>
> The combination of IonizeMain/Ionize.F90 and IonizeMain/Eqi/nei.F90 does
> not result in a valid Fortran program; but compilers will not usually
> detect this because the code does not use an explicit interface for neimn.
>
> We are running regular regression tests using the NeiTest simulation, but
> those only use the Nei variant.
>
> It appears that IonizeMain/Eqi/nei.F90 is severely out of date;
> it also appears that two incompatible versions of nei.F90 were already
> part of FLASH version 2. So it seems the directory IonizeMain/Eqi is
> mostly of historical value, and the Users Guide is wrong as far as it
> gives the impression that Eqi is a viable alternative to Eqi.
>
> I am not going to discuss under which physical conditions the approach in
> the Ionize unit is applicable / valid / useful; I hope somebody else can
> clarify if needed, and answer your question:
>
>> And I have an additional question: if I understood this correctly, the
>> electron population fraction is set to constant in the code (by electron
>> to proton ratio). But even if we can ignore the contribution of metals,
>> helium might not be fully ionized and may make a significant change to
>> electron density. Then why is it valid that electron density remain
>> unchanged throughout ionization?
>
>
> Klaus
More information about the flash-users
mailing list