resistivity_copper Function

public function resistivity_copper(c_pt, T, B) result(resistivity) bind(C)

Arguments

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

Return Value real(kind=dp)


Source Code

  function resistivity_copper(c_pt,T,B) result(resistivity) bind(C)
      type(c_ptr), value :: c_pt
      real(dp), value :: T,B
      real(dp) :: resistivity    
      real(dp) :: Tmin,Tmax,TT,arg,rho1,A,aa,bb
      type(copper_cfg_t), pointer :: copper_ptr
      call c_f_pointer(c_pt,copper_ptr)

      Tmin   = 0.1_dp ; Tmax   = 1000.0_dp
      TT=T
      TT=max(TT,Tmin)
      TT=min(TT,Tmax)

      arg     = (50.0_dp/TT)**6.428_dp
      rho1    = 1.171e-17_dp*TT**4.49_dp/(1.0_dp+4.5e-7_dp*TT**3.35_dp*exp(-arg))

      bb=1.69e-8_dp
      resistivity = bb/copper_ptr%RRR + rho1 + 0.4531_dp*(bb*rho1/(copper_ptr%RRR*rho1+bb))

      if(abs(B)<1.0e-15_dp) return

      A = log10(1.553e-8_dp*B/resistivity)
      aa = -2.662_dp + 0.3168_dp*A + 0.6229_dp*A**2 - 0.1839_dp*A**3 + 0.01827_dp*A**4

      resistivity = resistivity*(1.0_dp+10.0_dp**aa)   
  end function resistivity_copper