About solve matrix

Dear FreeFem developers and users:

I would like to ask a question and hope to receive some help or suggestions.

(1)Background: For the following global matrix KGlobal (where A, B, C, etc., are all block matrices), it is common to solve it using:
set(KGlobal, solver=sparsesolver);
result = KGlobal^-1 * RHS;
KGlobal = [
[A, 0, 0, MS’],
[0, B, C, MR’],
[0, D, E, 0 ],
[MS, MR, 0, 0 ]
];

(2)My issue: Suppose now that the block matrix MR and its transpose change at each time step. If I continue to use the above solution method at every time step, I would need to reassemble, factorize, and solve the matrix at each step, which would be an extremely time-consuming process. Therefore, for cases where only a small portion of the matrix changes over time while the rest remains unchanged, does FreeFem++ offer a relatively convenient method to avoid this global operation?

I am still not very proficient with this software. If my description is unclear, I apologize for any confusion.

With a FreeFEM matrix it is not possible to exploit this feature and just reassemble the changing part of the block matrix KGlobal. With a PETSc Mat it is possible to exploit this feature.

I am very honored to receive your reply, Professor. May I ask if there are any reference cases? I haven’t delved deeply into this part of the content, and I hope to receive further guidance from you. Thank you very much, Professor