FEAP User Forum

FEAP => Programming => Topic started by: jonwong on July 31, 2012, 10:33:01 PM

Title: Solution renumbering as a macro
Post by: jonwong on July 31, 2012, 10:33:01 PM
Hi-

I have developed a sparse matrix vector multiplication algorithm that requires reordering the columns and rows of A, the elements of x and the elements in y in the problem A*x = y. The reordering is necessary for the particular GPU architecture this method is aimed at. Basically the rows of A are rearranged yielding A'*x=y'. However x is no longer consistently number in accordance with y', so the columns of A' and the elements of x are rearranged such that A''*x'=y', where the x' and y' numbering is consistent.

Currently, I am using custom usolve and uasble routines for a full matrix and I am using whatever numbering FEAP gives me. I wanted to know how one would go about reordering the ids in FEAP, in such a way so that FEAP will return x'. However, if possible, I would like to avoid modifying my imposed boundary conditions for the mesh, as the displacement boundary conditions are non-trivially defined. Basically I wanted to know if there is a good way to go about doing this without having to change the input file, as I would like to compare it to serial and parallel version of FEAP.

Thanks,
-Jon
Title: Re: Solution renumbering as a macro
Post by: FEAP_Admin on August 01, 2012, 09:57:13 AM
Equation renumbering is handled by a nodal renumbering array mr(np(89)).  Search for [opti] in pmacr3.f and you will find the code sequence that executes the renumbering, the resetting of the equation numbers etc.
Title: Re: Solution renumbering as a macro
Post by: jonwong on August 08, 2012, 03:46:15 AM
Thanks I will look into this. I haven't looked at the code in detail yet, but does FEAP renumber nodes when displacement conditions are changed at subsequent timesteps? I see there are calls to optid() and psetid is subsequently called.