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(); }