Storing and Accessing Data from Old Solutions

Dear PyFR developers,

I am trying to access data from multiple storage registers (time levels) in the solver’s point-wise kernels.
For scal_upts, I currently pass the id of a register of interest to the system.rhs() method, then use that id to set the active matrix of a “scal_upts_old” bank, which I declared in base/elements in the same way as scal_upts_inb/outb.
Is this the best approach in this case or is there a more straightforward/efficient way of passing this data to point-wise kernels?

How would I go about storing/accessing non-scal_upts data from older solutions, such as vect_upts and scal_fpts? Is there a way to use a “scratch buf” for that?

I would really appreciate your help with this.

Thanks,

Jabir

Hi Jabir,

I think your approach for accessing storage registers is good and efficient. The scratch space matrices we allocate are used for temporary storage, and gets overwritten whenever we need to utilize that storage for some other temporary data. But you can of course allocate a new matrix, and copy any matrix of matching size into the new storage any time. You just need to be careful about where to place copy operation. It should be right after when a scratch space matrix gets written the data you actually need.

Best,
Semih

Thank you, Semih!

After all, I created new scratch space matrices, since that involves less messing around with the integrator.