Lines Matching refs:snes

33 PetscErrorCode SNESNGSSetTolerances(SNES snes, PetscReal abstol, PetscReal rtol, PetscReal stol, Pe…  in SNESNGSSetTolerances()  argument
35 SNES_NGS *gs = (SNES_NGS *)snes->data; in SNESNGSSetTolerances()
38 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNGSSetTolerances()
41 …PetscCheck(abstol >= 0.0, PetscObjectComm((PetscObject)snes), PETSC_ERR_ARG_OUTOFRANGE, "Absolute … in SNESNGSSetTolerances()
45 …PetscCheck(rtol >= 0.0 && rtol < 1.0, PetscObjectComm((PetscObject)snes), PETSC_ERR_ARG_OUTOFRANGE… in SNESNGSSetTolerances()
49 …PetscCheck(stol >= 0.0, PetscObjectComm((PetscObject)snes), PETSC_ERR_ARG_OUTOFRANGE, "Step tolera… in SNESNGSSetTolerances()
53 …PetscCheck(maxit >= 0, PetscObjectComm((PetscObject)snes), PETSC_ERR_ARG_OUTOFRANGE, "Maximum numb… in SNESNGSSetTolerances()
79 PetscErrorCode SNESNGSGetTolerances(SNES snes, PetscReal *atol, PetscReal *rtol, PetscReal *stol, P… in SNESNGSGetTolerances() argument
81 SNES_NGS *gs = (SNES_NGS *)snes->data; in SNESNGSGetTolerances()
84 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNGSGetTolerances()
108 PetscErrorCode SNESNGSSetSweeps(SNES snes, PetscInt sweeps) in SNESNGSSetSweeps() argument
110 SNES_NGS *gs = (SNES_NGS *)snes->data; in SNESNGSSetSweeps()
113 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNGSSetSweeps()
131 PetscErrorCode SNESNGSGetSweeps(SNES snes, PetscInt *sweeps) in SNESNGSGetSweeps() argument
133 SNES_NGS *gs = (SNES_NGS *)snes->data; in SNESNGSGetSweeps()
136 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNGSGetSweeps()
141 static PetscErrorCode SNESReset_NGS(SNES snes) in SNESReset_NGS() argument
143 SNES_NGS *gs = (SNES_NGS *)snes->data; in SNESReset_NGS()
150 static PetscErrorCode SNESDestroy_NGS(SNES snes) in SNESDestroy_NGS() argument
153 PetscCall(SNESReset_NGS(snes)); in SNESDestroy_NGS()
154 PetscCall(PetscFree(snes->data)); in SNESDestroy_NGS()
158 static PetscErrorCode SNESSetUp_NGS(SNES snes) in SNESSetUp_NGS() argument
163 PetscCall(SNESGetNGS(snes, &f, NULL)); in SNESSetUp_NGS()
164 if (!f) PetscCall(SNESSetNGS(snes, SNESComputeNGSDefaultSecant, NULL)); in SNESSetUp_NGS()
168 static PetscErrorCode SNESSetFromOptions_NGS(SNES snes, PetscOptionItems PetscOptionsObject) in SNESSetFromOptions_NGS() argument
170 SNES_NGS *gs = (SNES_NGS *)snes->data; in SNESSetFromOptions_NGS()
179 if (flg) PetscCall(SNESNGSSetSweeps(snes, sweeps)); in SNESSetFromOptions_NGS()
184 if (flg || flg1 || flg2 || flg3) PetscCall(SNESNGSSetTolerances(snes, atol, rtol, stol, max_its)); in SNESSetFromOptions_NGS()
188 PetscCall(SNESSetNGS(snes, SNESComputeNGSDefaultSecant, NULL)); in SNESSetFromOptions_NGS()
189 …PetscCall(PetscInfo(snes, "Setting default finite difference secant approximation with coloring\n"… in SNESSetFromOptions_NGS()
198 static PetscErrorCode SNESView_NGS(SNES snes, PetscViewer viewer) in SNESView_NGS() argument
201 SNES_NGS *gs = (SNES_NGS *)snes->data; in SNESView_NGS()
207 PetscCall(DMSNESGetNGS(snes->dm, &f, NULL)); in SNESView_NGS()
213 static PetscErrorCode SNESSolve_NGS(SNES snes) in SNESSolve_NGS() argument
223snes->xl && !snes->xu && !snes->ops->computevariablebounds, PetscObjectComm((PetscObject)snes), PE… in SNESSolve_NGS()
226 X = snes->vec_sol; in SNESSolve_NGS()
227 F = snes->vec_func; in SNESSolve_NGS()
228 B = snes->vec_rhs; in SNESSolve_NGS()
230 PetscCall(PetscObjectSAWsTakeAccess((PetscObject)snes)); in SNESSolve_NGS()
231 snes->iter = 0; in SNESSolve_NGS()
232 snes->norm = 0.; in SNESSolve_NGS()
233 PetscCall(PetscObjectSAWsGrantAccess((PetscObject)snes)); in SNESSolve_NGS()
234 snes->reason = SNES_CONVERGED_ITERATING; in SNESSolve_NGS()
236 PetscCall(SNESGetNormSchedule(snes, &normschedule)); in SNESSolve_NGS()
239 if (!snes->vec_func_init_set) PetscCall(SNESComputeFunction(snes, X, F)); in SNESSolve_NGS()
240 else snes->vec_func_init_set = PETSC_FALSE; in SNESSolve_NGS()
243 SNESCheckFunctionDomainError(snes, fnorm); in SNESSolve_NGS()
244 PetscCall(PetscObjectSAWsTakeAccess((PetscObject)snes)); in SNESSolve_NGS()
245 snes->iter = 0; in SNESSolve_NGS()
246 snes->norm = fnorm; in SNESSolve_NGS()
247 PetscCall(PetscObjectSAWsGrantAccess((PetscObject)snes)); in SNESSolve_NGS()
248 PetscCall(SNESLogConvergenceHistory(snes, snes->norm, 0)); in SNESSolve_NGS()
251 PetscCall(SNESConverged(snes, 0, 0.0, 0.0, fnorm)); in SNESSolve_NGS()
252 PetscCall(SNESMonitor(snes, 0, snes->norm)); in SNESSolve_NGS()
253 if (snes->reason) PetscFunctionReturn(PETSC_SUCCESS); in SNESSolve_NGS()
255 PetscCall(PetscObjectSAWsGrantAccess((PetscObject)snes)); in SNESSolve_NGS()
256 PetscCall(SNESLogConvergenceHistory(snes, snes->norm, 0)); in SNESSolve_NGS()
260 PetscTryTypeMethod(snes, update, snes->iter); in SNESSolve_NGS()
262 for (i = 0; i < snes->max_its; i++) { in SNESSolve_NGS()
263 PetscCall(SNESComputeNGS(snes, B, X)); in SNESSolve_NGS()
265 …if (normschedule == SNES_NORM_ALWAYS || ((i == snes->max_its - 1) && (normschedule == SNES_NORM_IN… in SNESSolve_NGS()
266 PetscCall(SNESComputeFunction(snes, X, F)); in SNESSolve_NGS()
268 SNESCheckFunctionDomainError(snes, fnorm); in SNESSolve_NGS()
271 PetscCall(PetscObjectSAWsTakeAccess((PetscObject)snes)); in SNESSolve_NGS()
272 snes->iter = i + 1; in SNESSolve_NGS()
273 snes->norm = fnorm; in SNESSolve_NGS()
274 PetscCall(PetscObjectSAWsGrantAccess((PetscObject)snes)); in SNESSolve_NGS()
275 PetscCall(SNESLogConvergenceHistory(snes, snes->norm, snes->iter)); in SNESSolve_NGS()
277 PetscCall(SNESConverged(snes, snes->iter, 0.0, 0.0, fnorm)); in SNESSolve_NGS()
278 PetscCall(SNESMonitor(snes, snes->iter, snes->norm)); in SNESSolve_NGS()
279 if (snes->reason) PetscFunctionReturn(PETSC_SUCCESS); in SNESSolve_NGS()
281 PetscTryTypeMethod(snes, update, snes->iter); in SNESSolve_NGS()
317 PETSC_EXTERN PetscErrorCode SNESCreate_NGS(SNES snes) in SNESCreate_NGS() argument
322 snes->ops->destroy = SNESDestroy_NGS; in SNESCreate_NGS()
323 snes->ops->setup = SNESSetUp_NGS; in SNESCreate_NGS()
324 snes->ops->setfromoptions = SNESSetFromOptions_NGS; in SNESCreate_NGS()
325 snes->ops->view = SNESView_NGS; in SNESCreate_NGS()
326 snes->ops->solve = SNESSolve_NGS; in SNESCreate_NGS()
327 snes->ops->reset = SNESReset_NGS; in SNESCreate_NGS()
329 snes->usesksp = PETSC_FALSE; in SNESCreate_NGS()
330 snes->usesnpc = PETSC_FALSE; in SNESCreate_NGS()
331 snes->alwayscomputesfinalresidual = PETSC_FALSE; in SNESCreate_NGS()
333 PetscCall(SNESParametersInitialize(snes)); in SNESCreate_NGS()
334 PetscObjectParameterSetDefault(snes, max_funcs, 10000); in SNESCreate_NGS()
335 PetscObjectParameterSetDefault(snes, max_its, 10000); in SNESCreate_NGS()
344 snes->data = (void *)gs; in SNESCreate_NGS()