subroutine TopDrive_Inputs ! Use CSimulationVariables use CTopDrivePanelVariables use SimulationVariables use UnitySignalsModule use SimulationVariables Use TD_DrillStemComponents IMPLICIT NONE integer :: i data%State%TDS%String_Torque = data%State%TD_String%StringTorque*12.d0 ![lb.ft]*12 ---> [lb.in] ????????? !data%State%TDS%String_Torque = 20000. data%State%TDS%String_Torque = 0.112984829d0*data%State%TDS%String_Torque ![N.m] data%State%TDS%PowerState = data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState data%State%TDS%RpmKnob = data%EquipmentControl%TopDrivePanel%RpmKnob !data%State%TDS%MotorFaileMalf ! jayi meghdardehi nashode ?????????????????? data%State%TDS%RateChange = 193.d0 ![RPM/s] motaghayere voroudi ??? data%State%TDS%DrillTorqueState = data%EquipmentControl%TopDrivePanel%TopDriveDrillTorqueState data%State%TDS%TorqueLimitKnob = data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob ! bayad hazf shavad??????????????/ !===> data%State%TDS%String_JCoef Calculation if ( (data%State%TDS%DrillTorqueState==-1) .and. ((Get_TdsConnectionModes()==TDS_CONNECTION_STRING).or.(Get_TdsConnectionModes()==TDS_CONNECTION_SPINE)) ) then !if TopDrive connected to string data%State%TDS%String_JCoef = 0.d0 Do i = 1,data%State%TD_String%StringConfigurationCount data%State%TDS%String_JCoef = data%State%TDS%String_JCoef+( (data%State%TD_DrillStem(i)%TotalWeight*((data%State%TD_DrillStem(i)%Id**2.d0)+(data%State%TD_DrillStem(i)%Od**2.d0)))/8.d0 ) ![lb.ft^2] , Jz=(1/2)*m*(r1^2+r2^2) End Do data%State%TDS%String_JCoef = data%State%TDS%String_JCoef*0.0421401d0 ![kg.m^2] else data%State%TDS%String_JCoef = 0.d0 data%State%TDS%String_Torque = 0.d0 end if data%State%TDS%String_JCoef = data%State%TDS%String_JCoef/10.d0 !???????? /10: bi dalil, check it end subroutine