Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Source Code
subroutine solve_nonlinear_system(n,guesses,residual_fn,x_best,success)integer,intent(in)::nreal(dp),intent(in)::guesses(:,:)procedure(nonlinear_residual)::residual_fnreal(dp),intent(out)::x_best(n)logical,intent(out)::successinteger::guess_idxreal(dp)::x_trial(n),best_norm,trial_normlogical::trial_successsuccess=.false.if(size(guesses,1)/=n)error stop'solve_nonlinear_system guess dimension mismatch.'x_best=guesses(:,1)best_norm=huge(1.0d0)do guess_idx=1,size(guesses,2)call try_newton_solve(n,guesses(:,guess_idx),residual_fn,x_trial,trial_norm,trial_success)if(trial_norm<best_norm)thenbest_norm=trial_normx_best=x_trialend if if(trial_success.and.trial_norm<nonlinear_tol)thensuccess=.true.x_best=x_trialreturn end if end dosuccess=best_norm<nonlinear_tolend subroutine solve_nonlinear_system