[Trilinos-Users] Replacing maps in Epetra CRS Matrix
Pavel Jiránek
pavel.jiranek at gmail.com
Fri Oct 11 05:09:48 MDT 2013
Mike,
Thanks, it works perfectly.
Pavel
On Thu, Oct 10, 2013 at 12:48 AM, Heroux, Michael A <maherou at sandia.gov>wrote:
> Pavel,
>
> I think I have figured out the problem. You really need one more method
> to complete the transformation you want: ReplaceRangeMap().
>
> I have added this function to my local clone and tested your driver with
> it. Initial results look good.
>
> Because this is a change to Epetra, I have to do a lot of testing to
> make sure I didn't break anything that depends on it, before checking in
> the change. However, I have attached a patch file with the diffs. I
> don't think there have been any changes to these files since the previous
> release, so you should be able to drop them into your copy.
>
> Let me know if this works, or if you have problems.
>
> Thanks.
>
> Mike
>
> From: Pavel Jiránek <pavel.jiranek at gmail.com>
> Date: Wednesday, October 2, 2013 6:26 AM
> To: Michael A Heroux <maherou at sandia.gov>
> Cc: "trilinos-users at software.sandia.gov" <
> trilinos-users at software.sandia.gov>
> Subject: [EXTERNAL] Re: [Trilinos-Users] Replacing maps in Epetra CRS
> Matrix
>
> Dear Mike,
>
> Thanks for the quick answer and confirmation that it should work.
>
> Please see the attached file for an example I've made to test the map
> replacement (compiled with gcc 4.7 and -std=c++11). Everything works fine
> except that the range map after calling all the available replacement
> methods is still same as the original (nonlinear) row map.
>
> Actually I cannot see how the range map could be updated by any of the
> Replace{RowMap,ColMap,DomainMapAndImporter} methods. What I mean is that
> assuming the row and range maps need not to be necessarily same (as
> specified by the FillComplete's second argument), I cannot see how the 3
> replacement routines could deduce which map to actually use as the
> replacement of the row map. Shouldn't there be another replacer similar to
> ReplaceDomainMapAndImporter to achieve this?
>
> Best regards,
>
> Pavel
>
> P.S.: I actually do not need this feature anymore but I guess it would
> be a good idea anyway :-)
>
>
>
> On Tue, Oct 1, 2013 at 11:52 PM, Heroux, Michael A <maherou at sandia.gov>wrote:
>
>> Hi Pavel,
>>
>> If you have a simple example routine, please send it. What you
>> describe should work.
>>
>> Thanks.
>>
>> Mike
>>
>> ------------------------------
>> *From:* trilinos-users-bounces at software.sandia.gov [
>> trilinos-users-bounces at software.sandia.gov] on behalf of Pavel Jiránek [
>> pavel.jiranek at gmail.com]
>> *Sent:* Tuesday, October 01, 2013 4:46 AM
>> *To:* trilinos-users at software.sandia.gov
>> *Subject:* [EXTERNAL] [Trilinos-Users] Replacing maps in Epetra CRS
>> Matrix
>>
>> Hello,
>>
>> I have a distributed CRS matrix (call it A) with a given row map. For
>> some reason, I would need to make a permutation of the global IDs so that
>> the row map is linear, if possible without a need to create another matrix
>> and fill it again using different (linear) row map.
>>
>> What I do at the moment is:
>> 1) Create a linear row map of the same local dimension as the row map of
>> A.
>> 2) Make an int vector view to its GIDs (on the row map of A).
>> 3) Make an int vector on the col map of A and import the vector from the
>> previous step.
>> 4) Create a col map deduced from the imported GIDs.
>>
>> Then I call ReplaceRowMap(), ReplaceColMap(), and
>> ReplaceDomainMapAndImporter() on A. I suppose that this is correct (no
>> error happens) but still, the matrix still has an incorrect range map
>> equivalent to the old (nonlinear) row map. Is there any way to replace also
>> that one?
>>
>> Thanks in advance for any feedback.
>>
>> Regards,
>>
>> Pavel
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://software.sandia.gov/pipermail/trilinos-users/attachments/20131011/74434214/attachment.html
More information about the Trilinos-Users
mailing list