Пример #1
0
  public static String getJSON(FemCore model, double beta, double gamma) {

    final double start = System.currentTimeMillis();

    final int numberOfNodes = model.getNumberOfNodes();
    final int numberOfElements = model.getNumberOfElements();

    // Set new gravity forces
    if (Math.abs(beta) >= 0.1 || Math.abs(gamma) >= 0.1) {

      double xForce = 2000.0 * Math.sin(-beta / 180 * Math.PI) / numberOfNodes;
      double yForce = 2000.0 * Math.sin(-gamma / 180 * Math.PI) / numberOfNodes;

      final double[] newinputForces = new double[numberOfNodes * 2];
      for (int nodeId = 1; nodeId <= numberOfNodes; nodeId++) {
        if (!model.isNodeHorzontallyFixed(nodeId)) {
          newinputForces[nodeId * 2 - 1] = xForce;
        } else {
          newinputForces[nodeId * 2 - 1] = 0.0;
        }

        if (!model.isNodeVerticallyFixed(nodeId)) {
          newinputForces[nodeId * 2 - 2] = yForce;
        } else {
          newinputForces[nodeId * 2 - 2] = 0.0;
        }
      }
      model.solveLinearEquations(newinputForces);
    } else {
      model.solveLinearEquations(null);
    }

    final HashMap<Integer, Boolean> nodeIds = new HashMap<Integer, Boolean>();
    final StringBuilder pre = new StringBuilder("[");
    for (int elementId = 1; elementId <= numberOfElements; elementId++) {
      pre.append("[");
      for (int cornerId = 1; cornerId < 4; cornerId++) {
        final int nodeId = model.getNodeIdByElementId(elementId, cornerId);
        pre.append("\n{\"id\": ")
            .append(
                nodeId //
                )
            .append(", \"x_force\" : ")
            .append(
                model.getSolutionNodeForceX(nodeId) //
                )
            .append(", \"y_force\" : ")
            .append(
                model.getSolutionNodeForceY(nodeId) //
                )
            .append(", \"x_d\" : ")
            .append(
                model.getSolutionNodeDisplacementX(nodeId) //
                )
            .append(", \"y_d\" : ")
            .append(
                model.getSolutionNodeDisplacementY(nodeId) //
                )
            .append(", \"x_fixed\" : ")
            .append(
                model.isNodeVerticallyFixed(nodeId) //
                )
            .append(", \"y_fixed\" : ")
            .append(
                model.isNodeHorzontallyFixed(nodeId) //
                )
            .append(", \"x\" : ")
            .append(
                model.getNodeIdByElementIdX(elementId, cornerId) //
                )
            .append(", \"y\" : ")
            .append(
                model.getNodeIdByElementIdY(elementId, cornerId) //
                )
            .append(", \"deltaArea\" : ")
            .append(
                model.getSolutionsDisplacementsMeanX(elementId) //
                )
            .append("  }\n");
        if (cornerId <= 3) {
          pre.append(',');
        }
        nodeIds.put(nodeId, true);
      }
      pre.append("]");
      if (elementId < numberOfElements + 1) {
        pre.append(',');
      }
    }
    pre.append("]");
    final double end = System.currentTimeMillis();
    System.out.println("json created             [" + (end - start) + "ms]");

    return pre.toString();
  }