critical_field_nbti Function

public function critical_field_nbti(c_pt, T, St) result(critical_field) bind(C)

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: c_pt
real(kind=dp), value :: T
real(kind=dp), value :: St

Return Value real(kind=dp)


Source Code

  function critical_field_nbti(c_pt,T,St) result(critical_field) bind(C)
      type(c_ptr), value :: c_pt
      real(dp), value :: T,St
      real(dp) :: critical_field
      real(dp) :: Tlim,tt,bb,Tlow

      type(nbti_cfg_t), pointer :: nbti_ptr
      call c_f_pointer(c_pt,nbti_ptr)

      ! M.S.Lubell, Scaling formulas for critical current and critical field
      ! for commercial NbTi, IEEE Trans. Mag. ,19, (1983).      

      Tlow=0.0_dp
      Tlim=max(T,Tlow)
      tt = Tlim/nbti_ptr%Tc0_p

      if(tt>0.0_dp .and. tt<1.0_dp) then
        bb = 1.0_dp-tt**nbti_ptr%nu
      else if(tt<=0.0_dp) then
        bb = 1.0_dp
      else if(tt>1.0_dp) then
        bb = 0.0_dp
      endif
 
      critical_field = nbti_ptr%Bc20 * bb
  end function critical_field_nbti