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.

CStringConfiguration.f90 3.3 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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