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.
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.
Source Code
subroutine supercond_current(Curr,CritCurr,n,V0,Area,Cond,ratio,derImpFunctdRatio)real(dp),intent(in)::Curr,CritCurr,V0,Area,Condinteger,intent(in)::nreal(dp),intent(out)::ratio,derImpFunctdRatioreal(dp)::aa,bb,functinteger::NbreMaxIte,iteaa=CritCurr/(Area*Cond*V0)bb=Curr/(Area*Cond*V0)ratio=min(bb/aa,bb**(1.0_dp/float(n)))NbreMaxIte=200! Newton methoddo ite=1,NbreMaxItefunct=ratio**n+aa*ratio-bbderImpFunctdRatio=n*(ratio**(n-1))+aaif(abs(funct)>1.0e-8_dp)thenratio=ratio-funct/derImpFunctdRatioelse exit endif if(ite==NbreMaxIte)then call set_error('convergence failure in supercond_current')return endif enddoend subroutine supercond_current