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