Simulation Core
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

64 lines
3.3 KiB

  1. module CStringConfiguration
  2. use CStringConfigurationVariables
  3. use ConfigurationVariables
  4. implicit none
  5. public
  6. contains
  7. integer function SetStringConfigurations(count, array, bit)
  8. !DEC$ ATTRIBUTES DLLEXPORT::SetStringConfigurations
  9. !DEC$ ATTRIBUTES ALIAS: 'SetStringConfigurations' :: SetStringConfigurations
  10. use CManifolds
  11. implicit none
  12. integer, intent(in) :: count
  13. integer :: i, j
  14. type(CStringItem), intent(inout), target :: array(count)
  15. type(CBitInfo), intent(inout) :: bit
  16. type(CStringItem), pointer :: item
  17. Configuration%StringConfiguration%BitDefinition%BitType = bit%BitType
  18. Configuration%StringConfiguration%BitDefinition%BitSize = bit%BitSize
  19. Configuration%StringConfiguration%BitDefinition%BitCodeHundreds = bit%BitCodeHundreds
  20. Configuration%StringConfiguration%BitDefinition%BitCodeTens = bit%BitCodeTens
  21. Configuration%StringConfiguration%BitDefinition%BitCodeOnes = bit%BitCodeOnes
  22. Configuration%StringConfiguration%BitDefinition%BitNozzleSize = bit%BitNozzleSize
  23. Configuration%StringConfiguration%BitDefinition%BitLength = bit%BitLength
  24. Configuration%StringConfiguration%BitDefinition%BitWeightPerLength = bit%BitWeightPerLength
  25. Configuration%StringConfiguration%BitDefinition%BitNozzleNo = bit%BitNozzleNo
  26. Configuration%StringConfiguration%BitDefinition%FloatValve = bit%FloatValve
  27. Configuration%StringConfiguration%StringConfigurationCount = count
  28. if(Configuration%StringConfiguration%BitDefinition%FloatValve) then
  29. call InstallFloatValve()
  30. else
  31. call RemoveFloatValve()
  32. endif
  33. if(size(Configuration%StringConfiguration%StringConfigurations) > 0) then
  34. deallocate(Configuration%StringConfiguration%StringConfigurations)
  35. end if
  36. if(count > 0) then
  37. allocate(Configuration%StringConfiguration%StringConfigurations(count))
  38. !j = count
  39. do i = 1, count
  40. item => array(i)
  41. Configuration%StringConfiguration%StringConfigurations(i)%ComponentType = item%ComponentType
  42. Configuration%StringConfiguration%StringConfigurations(i)%NumberOfJoint = item%NumberOfJoint
  43. Configuration%StringConfiguration%StringConfigurations(i)%LengthPerJoint = item%LengthPerJoint
  44. Configuration%StringConfiguration%StringConfigurations(i)%NominalOd = item%NominalOd
  45. Configuration%StringConfiguration%StringConfigurations(i)%NominalId = item%NominalId
  46. Configuration%StringConfiguration%StringConfigurations(i)%WeightPerLength = item%WeightPerLength
  47. Configuration%StringConfiguration%StringConfigurations(i)%ComponentLength = item%ComponentLength
  48. Configuration%StringConfiguration%StringConfigurations(i)%NominalToolJointOd = item%NominalToolJointOd
  49. Configuration%StringConfiguration%StringConfigurations(i)%Grade = item%Grade
  50. !print*, 'type=', StringConfigurations(i)%ComponentType
  51. !print*, 'NumberOfJoint=', StringConfigurations(i)%NumberOfJoint
  52. !print*, '-----------------------------------------------------------'
  53. !j = j - 1
  54. end do
  55. end if
  56. SetStringConfigurations = 0
  57. end function SetStringConfigurations
  58. end module CStringConfiguration