<div dir="ltr"><div dir="ltr">On Tue, Dec 10, 2024 at 4:32 AM David Jiawei LUO LIANG <<a href="mailto:12431140@mail.sustech.edu.cn">12431140@mail.sustech.edu.cn</a>> wrote:</div><div class="gmail_quote gmail_quote_container"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Hello PETSc,</div><div><br></div><div>I want to substitute the existing nonlinear solver codes with SNES. </div><div><br></div><div>The existing code is Parallel computing.</div><div><br></div><div>My FormFunction and FormJacobian is attached in file Res_Jac.cpp. </div><div><br></div><div>The global tangent matrix assembly and residual function assembly are both implemented by invoking user pointers. </div><div><br></div><div>The following is the message, we can find that SNES just iterate once. </div><div><br></div><div><font><img src="cid:ii_193b0bb844891e2817b1"></font></div><div><font><br></font></div><div><font>I think the problem is input solution Vec y doesn't link to Residual Vec f, because my update is stored in the user variables.</font></div><div>If I use </div><div><u></u><div><font>const PetscScalar *yy;</font></div><div><font>VecGetArrayRead(y, &yy); </font></div><div>the value of yy is not identical to Vec y, because there are multi thread.</div><div><br></div><div>So, my problem is how to assembly residual and tangent in parallel environment?</div></div></blockquote><div><br></div><div>I am having trouble understanding your question.</div><div><br></div><div>1) Can you run with -snes_monitor -snes_converged_reason -ksp_monitor_true_residual -ksp_converged_reason -snes_view and send the output?</div><div><br></div><div>2) You have the line</div><div><br></div><div>VecCopy(user->gassem_ptr->G, f);</div><div><br></div><div>which looks like it puts the values of your G into f, so I am not sure what the problem is.</div><div><br></div><div>  THanks,</div><div><br></div><div>     Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><font><br></font><div style="color:rgb(144,144,144);font-family:"Arial Narrow";font-size:12px"></div></div><div style="font-size:14px;font-family:Verdana;color:rgb(0,0,0)"><div><div style="width:305px;height:35px;line-height:35px;margin:20px 0px 0px"><img src="https://exmail.qq.com/cgi-bin/viewfile?type=logo&domain=mail.sustech.edu.cn"></div><div style="margin:10px 0px 0px"><h4 style="margin:0px;font-size:14px;font-weight:bold;line-height:28px;zoom:1">David Jiawei LUO LIANG</h4><p style="margin:0px;line-height:22px;color:rgb(160,160,160)"></p><p style="margin:0px;line-height:22px;color:rgb(160,160,160)">南方科技大学/学生/研究生/2024</p><p style="margin:0px;line-height:22px;color:rgb(160,160,160)"></p><p style="margin:0px;line-height:22px;color:rgb(160,160,160)">广东省深圳市南山区学苑大道1088号</p></div></div></div><u></u></div><div> </div><div><u></u><u></u></div></blockquote></div><div><br clear="all"></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!awWXPHw1GNXswCx9rANXgow3jupJ1On7I9qTmMvSDr0WuSRayb_cCkSj1qvn6spDBOJX-GVhIvjDx8xw7ziW$" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>