module CChokeManifoldVariables use CManifolds implicit none public Type :: ChokeManifoldType ! Input vars logical :: ChokeManifoldValve1 logical :: ChokeManifoldValve2 real(8) :: LeftManualChoke logical :: ChokeManifoldValve4 logical :: ChokeManifoldValve5 real(8) :: RightManualChoke logical :: ChokeManifoldValve7 logical :: ChokeManifoldValve8 logical :: ChokeManifoldValve9 logical :: ChokeManifoldValve10 logical :: ChokeManifoldValve11 logical :: ChokeManifoldValve12 logical :: ChokeManifoldValve13 ! Output vars integer :: HydraulicChock1 integer :: HydraulicChock2 ! Control vars logical :: HyChock1OnProblem = .false. logical :: HyChock2OnProblem = .false. logical :: LeftManChokeOnProblem = .false. logical :: RightManChokeOnProblem = .false. End Type ChokeManifoldType Type(ChokeManifoldType)::ChokeManifold contains subroutine SetHydraulicChock1(v) implicit none integer, intent(in) :: v ChokeManifold%HydraulicChock1 = v if(ChokeManifold%HyChock1OnProblem) then call ChangeValve(33, .true.) else if(v == 100) then if(Manifold%Valve(33)%Status) call ChangeValve(33, .false.) else if(.not.Manifold%Valve(33)%Status) call ChangeValve(33, .true.) endif endif !WRITE (*,*) ' valve 33 ', Valve(33)%Status, ' arg ', v end subroutine subroutine SetHydraulicChock2(v) implicit none integer, intent(in) :: v ChokeManifold%HydraulicChock2 = v if(ChokeManifold%HyChock2OnProblem) then call ChangeValve(34, .true.) else if(v==100) then if(Manifold%Valve(34)%Status) call ChangeValve(34, .false.) else if(.not.Manifold%Valve(34)%Status) call ChangeValve(34, .true.) endif endif !WRITE (*,*) ' valve 34 ', Valve(34)%Status, ' arg ', v end subroutine endmodule CChokeManifoldVariables