server-ansys.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. from abc import ABC
  2. import tornado.ioloop
  3. import tornado.web
  4. import tornado.escape
  5. import collections
  6. import json
  7. import sqlite3 as lite
  8. import sys
  9. import gfk_plate
  10. import logging
  11. from ini_logger import *
  12. # log_dir = r'/var/log/server'
  13. # ini_logger(log_dir)
  14. inputs = [
  15. {'type': "Materials", 'value':
  16. [{
  17. "e11": 42.5,
  18. "e22": 11,
  19. "e33": 11,
  20. "pr12": 0.28,
  21. "pr13": 0.28,
  22. "pr23": 0.28,
  23. "dens": 1950E-6,
  24. "g12": 4.2,
  25. "g13": 4.2,
  26. "g23": 2.56,
  27. "alp11": 5.7E-6,
  28. "alp22": 45E-6,
  29. "alp33": 45E-6,
  30. "k11": 0.72E3,
  31. "k22": 0.5E3,
  32. "k33": 0.5E3,
  33. "bet11": 0E-3,
  34. "bet22": 4E-3,
  35. "bet33": 4E-3,
  36. "d11": 4.4E3,
  37. "d22": 3.1E3,
  38. "d33": 3.1E3
  39. }]},
  40. {'type': "Angles", 'value': [90, 0, 0, 0, 0, 0]}
  41. ]
  42. outputs = [
  43. {'type': "Srmax", 'value': 0},
  44. {'type': "Stmax", 'value': 2},
  45. {'type': "S1max", 'value': 4},
  46. {'type': "S2max", 'value': 4}
  47. ]
  48. def update():
  49. outputs[0]['value'], outputs[1]['value'], outputs[2]['value'], outputs[3]['value'] = \
  50. gfk_plate.sim_rotor(inputs[0]['value'], inputs[1]['value'])
  51. class MainHandler(tornado.web.RequestHandler, ABC):
  52. def prepare(self):
  53. self.set_header("Content-Type", "application/json")
  54. if self.request.headers.get('Content-Type') == 'application/json':
  55. print(self.request.body)
  56. self.json_args = json.loads(self.request.body.decode('utf-8'))
  57. else:
  58. self.json_args = None
  59. def get(self, param):
  60. print("INFO: GET /" + param)
  61. if param == "inputs":
  62. self.write(json.dumps(inputs))
  63. elif param == "outputs":
  64. self.write(json.dumps(outputs))
  65. elif param == "status":
  66. self.write("{\"status\": \"ready\"}")
  67. elif param == "stop":
  68. instance = tornado.ioloop.IOLoop.instance()
  69. instance.add_callback(instance.stop)
  70. else:
  71. self.write("Error: GET /" + param)
  72. print("Error: GET /" + param)
  73. def post(self, param):
  74. if param == "update":
  75. if self.json_args is not None:
  76. #print("INFO: GET /" + param + "with body: " + self.json_args.dump())
  77. counter = 0
  78. for entity in self.json_args:
  79. inputs[counter]['value'] = entity['value']
  80. counter = counter + 1
  81. update()
  82. self.write(json.dumps(outputs))
  83. else:
  84. self.write("Error: POST /" + param)
  85. print("Error: POST /" + param)
  86. def make_app():
  87. return tornado.web.Application([
  88. (r"/(.*)", MainHandler),
  89. ])
  90. if __name__ == "__main__":
  91. app = make_app()
  92. app.listen(int(sys.argv[1]))
  93. tornado.ioloop.IOLoop.current().start()