Eigenvector Positivity Problem Log Out | Topics | Search
Moderators | Register | Edit Profile

FlexPDE User's Forum » User Postings » Eigenvector Positivity Problem « Previous Next »

Author Message
Top of pagePrevious messageNext messageBottom of page Link to this message

Liem Peng Hong (liemph)
Member
Username: liemph

Post Number: 5
Registered: 09-2004
Posted on Tuesday, August 30, 2005 - 09:32 am:   

Dear Member,

I am solving a one-group neutron diffusion eigenvalue problem (see attachment). With modes=1 I assume I obtain the smallest eigenvalue (lambda) and then the neutron multiplication keff=1/lambda can be derived. I check with other codes and by hand calculation the lambda (or keff) is accurate enough. But sometimes I got the eigenvector (i.e. the neutron flux) negative (i.e. correct spatial distribution but completely reversed), which is physically strange. Of course, this is mathematically correct. Is there any way to force the eigenvector to be positive distribution ?
application/octet-streamEigenNeutDiff
diff1.pde (1.1 k)
Top of pagePrevious messageNext messageBottom of page Link to this message

Robert G. Nelson (rgnelson)
Moderator
Username: rgnelson

Post Number: 441
Registered: 06-2003
Posted on Tuesday, August 30, 2005 - 07:46 pm:   

As long as the negative result is a legitimate eigenfunction, there is not much you can do to block it. Attempts to modify the equation to force the result positive mostly lead to nonlinear equations, which FlexPDE cannot handle in eigenvalue mode.

For the fundmental mode, you could merely plot abs(Flux). But all higher modes have both positive and negative values, so this would destroy the plots.

You could force the plot to make the largest value positive by defining:

pFlux = if globalmax(Flux)<abs(globalmin(Flux)) then -Flux else Flux

and then plotting pFlux.

Top of pagePrevious messageNext messageBottom of page Link to this message

James B. Mehl (jmehl)
New member
Username: jmehl

Post Number: 1
Registered: 09-2003
Posted on Tuesday, August 30, 2005 - 09:13 pm:   

You are free, of course, to normalize the eigenvectors any way you wish. I sometimes normalize to unit (positive) maximum using the following to normalize a variable u:

uscale = if(globalmax(u) > abs(globalmin(u))) then globalmax(u) else globalmin(u)
phi = u/uscale
Top of pagePrevious messageNext messageBottom of page Link to this message

Liem Peng Hong (liemph)
Member
Username: liemph

Post Number: 6
Registered: 09-2004
Posted on Wednesday, August 31, 2005 - 03:19 am:   

Dear Robert and James,

Thank you for your suggestion. They work nicely and solve my problem. In the neutron eigenvalue calculations, much interest is put on the fundamental eigenvalue and the corresponding eigenvector (that is the neutron flux distribution). We commonly use "power method iteration" or "source iteration method" to obtain those, which always results in positive distribution of neutron flux. We also periodically normalize the flux to avoid under or over flow problems. My (more elaborate) question is what method the FLEXPDE uses to obtain the fundamental eigenvalue ? And is there any guarantee that the modes=1 always produces the fundamental one ?

Best Regards,

Liem PH

Add Your Message Here
Post:
Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Password:
Options: Enable HTML code in message
Automatically activate URLs in message
Action:

Topics | Last Day | Last Week | Tree View | Search | Help/Instructions | Program Credits Administration