> On Jul 11, 2023, at 12:16 PM, neil liu <liufi...@gmail.com> wrote:
> 
> I think I understood that.
> 
> 1) In order to save memory, use a larger real system

   This will save a little memory, but requires a slight change to your 
model/code for your problem

> 2) vec will store the real part with imaginary part equal to zero in the 
> context of --scalar =complex. But this will not save memory. 

    This will waste a little memory.

    Usually, coordinates do not take much of the total memory, that is solution 
vectors, matrices, intermediate work vectors for the solver take most of the 
memory
so I suggest just using complex and not worrying about the few percent memory 
lost.


> 
> Right? 
> 
> Thanks, 
> 
> Xiaodong 
> 
> On Tue, Jul 11, 2023 at 12:03 PM neil liu <liufi...@gmail.com 
> <mailto:liufi...@gmail.com>> wrote:
>> Do you mean that, 
>> 
>> even if I configure with --scalar=complex, when I use vecGetarray to get the 
>> coords, the coords array is still stored in a real manner? 
>> 
>> Thanks, 
>> 
>> Xiaodong 
>> 
>> On Tue, Jul 11, 2023 at 11:54 AM Matthew Knepley <knep...@gmail.com 
>> <mailto:knep...@gmail.com>> wrote:
>>> On Tue, Jul 11, 2023 at 11:48 AM neil liu <liufi...@gmail.com 
>>> <mailto:liufi...@gmail.com>> wrote:
>>>> Thanks for your reply. 
>>>> I am using DMPLEX to read GMSH. And it seems I have to use 
>>>> DMGetCoordinatesLocal();
>>>> VecGetArray(veccords, &coords);//it seems coords has to be defined by 
>>>> complex either.
>>>> 
>>>> 2) Store the coordinates in coords with imaginary part equal to zero. 
>>>> I got the coordinates from above function VecGetArray, therefore will this 
>>>> reduce the memory? 
>>>> 
>>>> 3) is a good way to work around that. 
>>> 
>>> We just store them with real part 0.
>>> 
>>>   Thanks,
>>> 
>>>     Matt
>>>  
>>>> On Tue, Jul 11, 2023 at 11:40 AM Barry Smith <bsm...@petsc.dev 
>>>> <mailto:bsm...@petsc.dev>> wrote:
>>>>> 
>>>>>   Not really. PetscScalar (and entries of vectors etc) are either real or 
>>>>> complex, they cannot be mixed. 
>>>>> 
>>>>>   What parts of PETSc are you using, DM? 
>>>>> 
>>>>>   You can 
>>>>> 
>>>>> 1) store the coordinates in arrays and not use Vec for them. (of if you 
>>>>> are not using DM)
>>>>> 2) sore them in Vec but with imaginary part 0 
>>>>> 3) rewrite your complex systems as real systems (with twice as many 
>>>>> unknowns, but only real ones)
>>>>> 
>>>>>   Barry
>>>>> 
>>>>> 
>>>>> > On Jul 11, 2023, at 11:34 AM, neil liu <liufi...@gmail.com 
>>>>> > <mailto:liufi...@gmail.com>> wrote:
>>>>> > 
>>>>> > Dear Petsc developers,
>>>>> > 
>>>>> > My computation involves both real and complex numbers. 
>>>>> > For example, my coordinate is real, but my matrix is complex. 
>>>>> > 
>>>>> > I use VecGetArray to get the coordinates. But it seems coordinates have 
>>>>> > to be defined in a complex manner to be consistent with complex matrix. 
>>>>> > 
>>>>> > Is there some ways to work around this if I understood correctly ?
>>>>> > 
>>>>> > Thanks, 
>>>>> > 
>>>>> > Xiaodong 
>>>>> > 
>>>>> > 
>>>>> > 
>>>>> 
>>> 
>>> 
>>> -- 
>>> What most experimenters take for granted before they begin their 
>>> experiments is infinitely more interesting than any results to which their 
>>> experiments lead.
>>> -- Norbert Wiener
>>> 
>>> https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>

Reply via email to