critical_temperature_nb3sn Function

public function critical_temperature_nb3sn(c_pt, B, St) result(critical_temperature) bind(C)

Arguments

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

Return Value real(kind=dp)


Calls

proc~~critical_temperature_nb3sn~~CallsGraph proc~critical_temperature_nb3sn critical_temperature_nb3sn proc~snb3sn sNb3Sn proc~critical_temperature_nb3sn->proc~snb3sn

Source Code

  function critical_temperature_nb3sn(c_pt,B,St) result(critical_temperature) bind(C)
      type(c_ptr), value :: c_pt
      real(dp), value :: B,St
      real(dp) :: critical_temperature
      real(dp) :: Blim,ee,s,Bc20,bb0,tt,Tc,Blow

      type(nb3sn_cfg_t), pointer :: nb3sn_ptr
      call c_f_pointer(c_pt,nb3sn_ptr)

      ! L. Bottura, B. Bordini, Jc(B,T,e) Parameterization for the ITER
      ! Nb3Sn Production, IEEE Trans. Appl. Sup., 19(2), 1477-1480, 2009      

      Blow=1.0e-3_dp
      Blim=max(abs(B),Blow)

      ee = St-nb3sn_ptr%emax
      s  = sNb3Sn(ee,nb3sn_ptr%Ca1,nb3sn_ptr%Ca2,nb3sn_ptr%e0a)
      Bc20 = nb3sn_ptr%Bc20m * s
      bb0 = Blim/Bc20

      if(bb0>0.0_dp .and. bb0<1.0_dp) then
         tt = s**0.3333333_dp * (1.0_dp-bb0)**(1.0_dp/nb3sn_ptr%nu)
      else if(abs(bb0)<=1.0e-12_dp) then
         tt = 1.0_dp
      else if(bb0>1.0_dp) then
         tt = 0.0_dp
      endif

      Tc = nb3sn_ptr%Tc0m * tt
      critical_temperature = Tc
  end function critical_temperature_nb3sn