supercond_current Subroutine

public subroutine supercond_current(Curr, CritCurr, n, V0, Area, Cond, ratio, derImpFunctdRatio)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: Curr
real(kind=dp), intent(in) :: CritCurr
integer, intent(in) :: n
real(kind=dp), intent(in) :: V0
real(kind=dp), intent(in) :: Area
real(kind=dp), intent(in) :: Cond
real(kind=dp), intent(out) :: ratio
real(kind=dp), intent(out) :: derImpFunctdRatio

Calls

proc~~supercond_current~~CallsGraph proc~supercond_current supercond_current float float proc~supercond_current->float proc~set_error set_error proc~supercond_current->proc~set_error

Called by

proc~~supercond_current~~CalledByGraph proc~supercond_current supercond_current proc~solid_source_terms solid_source_terms proc~solid_source_terms->proc~supercond_current proc~source_term_definition_strand source_term_definition_strand proc~source_term_definition_strand->proc~solid_source_terms proc~full_physics_definition_strand full_physics_definition_strand proc~full_physics_definition_strand->proc~source_term_definition_strand proc~main_loop main_loop proc~main_loop->proc~source_term_definition_strand proc~main_loop->proc~full_physics_definition_strand program~reims_p reims_p program~reims_p->proc~main_loop

Source Code

subroutine supercond_current(Curr,CritCurr,n,V0,Area,Cond,ratio,derImpFunctdRatio)

    real(dp), intent(in) :: Curr,CritCurr,V0,Area,Cond
    integer, intent(in) :: n
    real(dp), intent(out) :: ratio,derImpFunctdRatio
    real(dp) :: aa,bb,funct
    integer :: NbreMaxIte,ite

    aa=CritCurr/(Area*Cond*V0)
    bb=Curr/(Area*Cond*V0)

    ratio=min(bb/aa,bb**(1.0_dp/float(n)))
    NbreMaxIte=200
    ! Newton method
    do ite=1,NbreMaxIte
      funct=ratio**n+aa*ratio-bb
      derImpFunctdRatio=n*(ratio**(n-1))+aa
      if(abs(funct)>1.0e-8_dp) then
        ratio=ratio-funct/derImpFunctdRatio
      else
        exit
      endif
      if(ite==NbreMaxIte) then
        call set_error('convergence failure in supercond_current')
        return
      endif
    enddo

end subroutine supercond_current