| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(SSfluxLink_t), | intent(inout) | :: | me |
subroutine SSfluxLink_resolution_from_and_to_ports(me) type(SSfluxLink_t), intent(inout) :: me real(dp) :: TempS(me%NbSolLk), lambdS(me%NbSolLk), DerlambdS(me%NbSolLk), AreaMS(me%NbSolLk), sgn(me%NbSolLk), dxLoc(me%NbSolLk) real(dp) :: FlxS, DerFlxSdT1, DerFlxSdT2, Tint, num, den, DerTint(me%NbSolLk) integer :: NbSolLk, ibr NbSolLk=me%NbSolLk do ibr=1,NbSolLk TempS(ibr)=me%solLk(ibr)%p%TempS lambdS(ibr)=me%solLk(ibr)%p%lambdS DerlambdS(ibr)=me%solLk(ibr)%p%DerlambdS AreaMS(ibr)=me%solLk(ibr)%p%AreaS sgn(ibr)=me%solLk(ibr)%p%Sgn4lk dxLoc(ibr)=me%solLk(ibr)%p%dxLoc enddo Tint=(lambdS(1)*dxLoc(2)*TempS(1)+lambdS(2)*dxLoc(1)*TempS(2))/(lambdS(1)*dxLoc(2)+lambdS(2)*dxLoc(1)) num=lambdS(1)*dxLoc(2)*TempS(1)+lambdS(2)*dxLoc(1)*TempS(2) den=lambdS(1)*dxLoc(2)+lambdS(2)*dxLoc(1) DerTint(1)=dxLoc(2)*((DerlambdS(1)*TempS(1)+lambdS(1))*den-num*DerlambdS(1))/(den**2) DerTint(2)=dxLoc(1)*((DerlambdS(2)*TempS(2)+lambdS(2))*den-num*DerlambdS(2))/(den**2) FlxS=-2.0_dp*lambdS(1)*(Tint-TempS(1))/dxLoc(1) DerFlxSdT1=-(2.0_dp/dxLoc(1))*(DerlambdS(1)*(Tint-TempS(1))+lambdS(1)*(DerTint(1)-1.0_dp)) DerFlxSdT2=-(2.0_dp/dxLoc(1))*lambdS(1)*DerTint(2) me%solLk(1)%p%Flx=sgn(1)*FlxS me%solLk(1)%p%derFlx_derCon=sgn(1)*DerFlxSdT1 me%solLk(2)%p%Flx=-sgn(2)*FlxS me%solLk(2)%p%derFlx_derCon=-sgn(2)*DerFlxSdT2 me%derFlx_derOth12=sgn(1)*DerFlxSdT2 me%derFlx_derOth21=-sgn(2)*DerFlxSdT1 end subroutine SSfluxLink_resolution_from_and_to_ports