Пример #1
0
  public static int createModelFromString(FemCore femCore, String input) {

    int bandwidthExpected = 0;

    final List<Node> temporaryNodes = new LinkedList<Node>();
    temporaryNodes.add(new Node());

    final List<Integer[]> temporaryElements = new LinkedList<Integer[]>();
    temporaryElements.add(new Integer[5]);

    final String[] lines = input.toString().split("\\n");
    for (final String line : lines) {
      if (!line.trim().isEmpty()) {
        final String[] args = line.split(",");
        if (0 == args[0].trim().compareToIgnoreCase("N")) {
          femCore.incementNumberOfNodes();
          final int number = Integer.valueOf(args[1].trim());
          for (int index = temporaryNodes.size(); index <= number; index++) {
            temporaryNodes.add(new Node());
          }

          final Integer first = Integer.valueOf(args[2].trim());
          final Integer second = Integer.valueOf(args[3].trim());

          temporaryNodes.get(number).x = first;
          temporaryNodes.get(number).y = second;
        }
        if (0 == args[0].trim().compareToIgnoreCase("E")) {
          femCore.incementNumberOfElements();
          final int number = Integer.valueOf(args[1].trim());
          for (int index = temporaryElements.size(); index <= number; index++) {
            temporaryElements.add(new Integer[5]);
          }

          final Integer first = Integer.valueOf(args[2].trim());
          final Integer second = Integer.valueOf(args[3].trim());
          final Integer third = Integer.valueOf(args[4].trim());

          temporaryElements.get(femCore.getNumberOfElements())[1] = number;
          temporaryElements.get(femCore.getNumberOfElements())[2] = first;
          temporaryElements.get(femCore.getNumberOfElements())[3] = second;
          temporaryElements.get(femCore.getNumberOfElements())[4] = third;

          final int max = Math.max(Math.max(first, second), third);
          final int min = Math.min(Math.min(first, second), third);
          final int bandwidthOfElement = (1 + max - min) * 2;
          bandwidthExpected = Math.max(bandwidthExpected, bandwidthOfElement);
        }
        if (0 == args[0].trim().compareToIgnoreCase("D")) {

          if (femCore.getInputDisplacements() == null) {
            femCore.resetInputDisplacements();
          }

          final int number = Integer.valueOf(args[1].trim());
          if (0 == args[2].trim().compareToIgnoreCase("x")) {
            femCore.setInputDisplacementX(number, Double.valueOf(args[3].trim()));
          }
          if (0 == args[2].trim().compareToIgnoreCase("y")) {
            femCore.setInputDisplacementY(number, Double.valueOf(args[3].trim()));
          }
        }
        if (0 == args[0].trim().compareToIgnoreCase("F")) {

          if (femCore.getInputForces() == null) {
            femCore.resetInputForces();
          }

          final int number = Integer.valueOf(args[1].trim());
          if (0 == args[2].trim().compareToIgnoreCase("x")) {
            femCore.setNodeForceX(number, Double.valueOf(args[3].trim()));
          }
          if (0 == args[2].trim().compareToIgnoreCase("y")) {
            femCore.setNodeForceY(number, Double.valueOf(args[3].trim()));
          }
        }
      }
    }

    femCore.initRest();

    for (int i = 1; i <= femCore.getNumberOfElements(); i++) {
      femCore.setNodeIdByElementIdX(
          temporaryElements.get(i)[1], 1, temporaryNodes.get(temporaryElements.get(i)[2]).x);
      femCore.setNodeIdByElementIdX(
          temporaryElements.get(i)[1], 2, temporaryNodes.get(temporaryElements.get(i)[3]).x);
      femCore.setNodeIdByElementIdX(
          temporaryElements.get(i)[1], 3, temporaryNodes.get(temporaryElements.get(i)[4]).x);

      femCore.setNodeIdByElementIdY(
          temporaryElements.get(i)[1], 1, temporaryNodes.get(temporaryElements.get(i)[2]).y);
      femCore.setNodeIdByElementIdY(
          temporaryElements.get(i)[1], 2, temporaryNodes.get(temporaryElements.get(i)[3]).y);
      femCore.setNodeIdByElementIdY(
          temporaryElements.get(i)[1], 3, temporaryNodes.get(temporaryElements.get(i)[4]).y);

      femCore.setNodeIdByElementIdnodeID(
          temporaryElements.get(i)[1], 1, temporaryElements.get(i)[2]);
      femCore.setNodeIdByElementIdnodeID(
          temporaryElements.get(i)[1], 2, temporaryElements.get(i)[3]);
      femCore.setNodeIdByElementIdnodeID(
          temporaryElements.get(i)[1], 3, temporaryElements.get(i)[4]);
    }
    System.out.println(
        "default model created    [nodes="
            + femCore.getNumberOfNodes()
            + ", elements="
            + femCore.getNumberOfElements()
            + ", bandwidth="
            + bandwidthExpected
            + "]");
    return bandwidthExpected;
  }