List of usage examples for org.apache.commons.math.complex Complex Complex
public Complex(double real, double imaginary)
From source file:rb.app.ComplexRBSystem.java
@Override public void read_offline_data(String directory_name, boolean isAssetFile) throws IOException { isReal = false;/*from w ww .j ava 2 s. com*/ HttpClient client = new DefaultHttpClient(); int buffer_size = 8192; // Find out dimension of the RB space { InputStreamReader isr; String dataString = directory_name + "/n_bfs.dat"; if (!isAssetFile) { // Read from server HttpGet request = new HttpGet(dataString); HttpResponse response = client.execute(request); isr = new InputStreamReader(response.getEntity().getContent()); } else { // Read from assets isr = new InputStreamReader(context.getAssets().open(dataString)); } BufferedReader reader = new BufferedReader(isr, buffer_size); String line = reader.readLine(); set_n_basis_functions(Integer.parseInt(line)); reader.close(); } Log.d(DEBUG_TAG, "Finished reading n_bfs.dat"); // Read in output data if (get_n_outputs() > 0) { // Get output dual norms { RB_output_vectors = (FieldVector<Complex>[][]) new FieldVector<?>[get_n_outputs()][]; output_dual_norms = new Complex[get_n_outputs()][]; for (int i = 0; i < get_n_outputs(); i++) { InputStreamReader isr1; String dataString1 = directory_name + "/output_" + String.format("%03d", i) + "_dual_norms.dat"; if (!isAssetFile) { // Read from server HttpGet request1 = new HttpGet(dataString1); HttpResponse response1 = client.execute(request1); isr1 = new InputStreamReader(response1.getEntity().getContent()); } else { // Read from assets isr1 = new InputStreamReader(context.getAssets().open(dataString1)); } BufferedReader reader1 = new BufferedReader(isr1, buffer_size); String line1 = reader1.readLine(); String[] dual_norms_tokens = line1.split(" "); int Q_l_hat = get_Q_l(i) * (get_Q_l(i) + 1) / 2; output_dual_norms[i] = new Complex[Q_l_hat]; for (int q = 0; q < Q_l_hat; q++) { output_dual_norms[i][q] = new Complex(Double.parseDouble(dual_norms_tokens[q]), Double.parseDouble(dual_norms_tokens[Q_l_hat + q])); } RB_output_vectors[i] = (FieldVector<Complex>[]) new FieldVector<?>[get_Q_l(i)]; for (int q_l = 0; q_l < get_Q_l(i); q_l++) { // Now read in the RB output vectors InputStreamReader isr_i; String dataString_i = directory_name + "/output_" + String.format("%03d", i) + "_" + String.format("%03d", q_l) + ".dat"; if (!isAssetFile) { // Read from server HttpGet request_i = new HttpGet(dataString_i); HttpResponse response_i = client.execute(request_i); isr_i = new InputStreamReader(response_i.getEntity().getContent()); } else { // Read from assets isr_i = new InputStreamReader(context.getAssets().open(dataString_i)); } BufferedReader reader_i = new BufferedReader(isr_i, buffer_size); String line_i = reader_i.readLine(); String[] output_i_tokens = line_i.split(" "); RB_output_vectors[i][q_l] = new ArrayFieldVector<Complex>(get_n_basis_functions(), new Complex(0d, 0d)); for (int j = 0; j < get_n_basis_functions(); j++) { RB_output_vectors[i][q_l].setEntry(j, new Complex(Double.parseDouble(output_i_tokens[j]), Double.parseDouble(output_i_tokens[get_n_basis_functions() + j]))); } reader_i.close(); } reader1.close(); } } } Log.d(DEBUG_TAG, "Finished reading output data"); /* // Read in the inner product matrix { InputStreamReader isr; String dataString = directory_name + "/RB_inner_product_matrix.dat"; if(!isAssetFile) { HttpGet request = new HttpGet(dataString); HttpResponse response = client.execute(request); isr = new InputStreamReader(response.getEntity() .getContent()); } else { // Read from assets isr = new InputStreamReader( context.getAssets().open(dataString)); } BufferedReader reader = new BufferedReader(isr,buffer_size); String line = reader.readLine(); String[] tokens = line.split(" "); // Set the size of the inner product matrix RB_inner_product_matrix = new Array2DRowRealMatrix(n_bfs, n_bfs); // Fill the matrix int count = 0; for (int i = 0; i < n_bfs; i++) for (int j = 0; j < n_bfs; j++) { RB_inner_product_matrix.setEntry(i, j, Double .parseDouble(tokens[count])); count++; } reader.close(); } Log.d(DEBUG_TAG, "Finished reading RB_inner_product_matrix.dat"); */ // Read in the F_q vectors RB_F_q_vector = (FieldVector<Complex>[]) new FieldVector<?>[get_Q_f()]; for (int q_f = 0; q_f < get_Q_f(); q_f++) { InputStreamReader isr; String dataString = directory_name + "/RB_F_" + String.format("%03d", q_f) + ".dat"; if (!isAssetFile) { HttpGet request = new HttpGet(dataString); HttpResponse response = client.execute(request); isr = new InputStreamReader(response.getEntity().getContent()); } else { // Read from assets isr = new InputStreamReader(context.getAssets().open(dataString)); } BufferedReader reader = new BufferedReader(isr, buffer_size); String line = reader.readLine(); String[] tokens = line.split(" "); // Set the size of the inner product matrix RB_F_q_vector[q_f] = new ArrayFieldVector<Complex>(get_n_basis_functions(), new Complex(0d, 0d)); // Fill the vector for (int i = 0; i < get_n_basis_functions(); i++) { RB_F_q_vector[q_f].setEntry(i, new Complex(Double.parseDouble(tokens[i]), Double.parseDouble(tokens[get_n_basis_functions() + i]))); } reader.close(); } Log.d(DEBUG_TAG, "Finished reading RB_F_q data"); // Read in the A_q matrices RB_A_q_vector = (FieldMatrix<Complex>[]) new FieldMatrix<?>[get_Q_a()]; for (int q_a = 0; q_a < get_Q_a(); q_a++) { InputStreamReader isr; String dataString = directory_name + "/RB_A_" + String.format("%03d", q_a) + ".dat"; if (!isAssetFile) { HttpGet request = new HttpGet(dataString); HttpResponse response = client.execute(request); isr = new InputStreamReader(response.getEntity().getContent()); } else { // Read from assets isr = new InputStreamReader(context.getAssets().open(dataString)); } BufferedReader reader = new BufferedReader(isr, buffer_size); String line = reader.readLine(); String[] tokens = line.split(" "); // Set the size of the inner product matrix RB_A_q_vector[q_a] = new Array2DRowFieldMatrix<Complex>((new Complex(0, 0)).getField(), get_n_basis_functions(), get_n_basis_functions()); // Fill the vector int count = 0; for (int i = 0; i < get_n_basis_functions(); i++) for (int j = 0; j < get_n_basis_functions(); j++) { RB_A_q_vector[q_a].setEntry(i, j, new Complex(Double.parseDouble(tokens[count]), Double.parseDouble(tokens[count + get_n_basis_functions() * get_n_basis_functions()]))); count++; } reader.close(); } Log.d(DEBUG_TAG, "Finished reading RB_A_q data"); // Read in F_q representor norm data { InputStreamReader isr; String dataString = directory_name + "/Fq_norms.dat"; if (!isAssetFile) { HttpGet request = new HttpGet(dataString); HttpResponse response = client.execute(request); isr = new InputStreamReader(response.getEntity().getContent()); } else { // Read from assets isr = new InputStreamReader(context.getAssets().open(dataString)); } BufferedReader reader = new BufferedReader(isr, buffer_size); String line = reader.readLine(); String[] tokens = line.split(" "); // Declare the array int Q_f_hat = get_Q_f() * (get_Q_f() + 1) / 2; Fq_representor_norms = new Complex[Q_f_hat]; // Fill it for (int i = 0; i < Q_f_hat; i++) { Fq_representor_norms[i] = new Complex(Double.parseDouble(tokens[i * 2 + 0]), Double.parseDouble(tokens[i * 2 + 1])); } reader.close(); } Log.d(DEBUG_TAG, "Finished reading Fq_norms.dat"); // Read in Fq_Aq representor norm data { InputStreamReader isr; String dataString = directory_name + "/Fq_Aq_norms.dat"; if (!isAssetFile) { HttpGet request = new HttpGet(dataString); HttpResponse response = client.execute(request); isr = new InputStreamReader(response.getEntity().getContent()); } else { // Read from assets isr = new InputStreamReader(context.getAssets().open(dataString)); } BufferedReader reader = new BufferedReader(isr, buffer_size); String line = reader.readLine(); String[] tokens = line.split(" "); // Declare the array Fq_Aq_representor_norms = new Complex[get_Q_f()][get_Q_a()][get_n_basis_functions()]; double[][][] Rdata = new double[get_Q_f()][get_Q_a()][get_n_basis_functions()]; double[][][] Idata = new double[get_Q_f()][get_Q_a()][get_n_basis_functions()]; // Fill it int count = 0; for (int q_f = 0; q_f < get_Q_f(); q_f++) for (int q_a = 0; q_a < get_Q_a(); q_a++) { for (int i = 0; i < get_n_basis_functions(); i++) { Rdata[q_f][q_a][i] = Double.parseDouble(tokens[count]); count++; } for (int i = 0; i < get_n_basis_functions(); i++) { Idata[q_f][q_a][i] = Double.parseDouble(tokens[count]); count++; } } for (int q_f = 0; q_f < get_Q_f(); q_f++) for (int q_a = 0; q_a < get_Q_a(); q_a++) for (int i = 0; i < get_n_basis_functions(); i++) Fq_Aq_representor_norms[q_f][q_a][i] = new Complex(Rdata[q_f][q_a][i], Idata[q_f][q_a][i]); reader.close(); } Log.d(DEBUG_TAG, "Finished reading Fq_Aq_norms.dat"); // Read in Aq_Aq representor norm data { // Declare the array int Q_a_hat = get_Q_a() * (get_Q_a() + 1) / 2; Aq_Aq_representor_norms = new Complex[Q_a_hat][get_n_basis_functions()][get_n_basis_functions()]; int count = 0; for (int i = 0; i < get_Q_a(); i++) for (int j = i; j < get_Q_a(); j++) { BinaryReader dis; String dataString = directory_name + "/Aq_Aq_" + String.format("%03d", i) + "_" + String.format("%03d", j) + "_norms.bin"; if (!isAssetFile) { HttpGet request = new HttpGet(dataString); HttpResponse response = client.execute(request); dis = new BinaryReader(response.getEntity().getContent()); } else { // Read from assets dis = new BinaryReader(context.getAssets().open(dataString)); } double[][] Rdata = new double[get_n_basis_functions()][get_n_basis_functions()]; double[][] Idata = new double[get_n_basis_functions()][get_n_basis_functions()]; for (int k = 0; k < get_n_basis_functions(); k++) for (int l = 0; l < get_n_basis_functions(); l++) Rdata[k][l] = dis.ReadDouble(); for (int k = 0; k < get_n_basis_functions(); k++) for (int l = 0; l < get_n_basis_functions(); l++) Idata[k][l] = dis.ReadDouble(); for (int k = 0; k < get_n_basis_functions(); k++) for (int l = 0; l < get_n_basis_functions(); l++) Aq_Aq_representor_norms[count][k][l] = new Complex(Rdata[k][l], Idata[k][l]); count++; dis.close(); } } Log.d(DEBUG_TAG, "Finished reading Aq_Aq_norms.dat"); // Read calN number if (get_mfield() > 0) { InputStreamReader isr; String dataString = directory_name + "/calN.dat"; if (!isAssetFile) { HttpGet request = new HttpGet(dataString); HttpResponse response = client.execute(request); isr = new InputStreamReader(response.getEntity().getContent()); } else { // Read from assets isr = new InputStreamReader(context.getAssets().open(dataString)); } BufferedReader reader = new BufferedReader(isr, buffer_size); String line = reader.readLine(); set_calN(Integer.parseInt(line)); reader.close(); } Log.d(DEBUG_TAG, "Finished reading calN.dat"); // Reading uL data if (get_Q_uL() > 0) { uL_vector = new Complex[get_Q_uL()][get_calN()]; for (int q_uL = 0; q_uL < get_Q_uL(); q_uL++) { BinaryReader dis; String dataString = directory_name + "/uL_" + String.format("%03d", q_uL) + ".bin"; if (!isAssetFile) { HttpGet request = new HttpGet(dataString); HttpResponse response = client.execute(request); dis = new BinaryReader(response.getEntity().getContent()); } else { // Read from assets dis = new BinaryReader(context.getAssets().open(dataString)); } float[] Rdata = new float[get_calN()]; float[] Idata = new float[get_calN()]; Rdata = dis.ReadFloat(get_calN()); // read in the real part Idata = dis.ReadFloat(get_calN()); // read in the imagine part for (int i = 0; i < get_calN(); i++) uL_vector[q_uL][i] = new Complex((double) Rdata[i], (double) Idata[i]); dis.close(); } } Log.d(DEBUG_TAG, "Finished reading uL.dat"); // Read in Z data if (get_mfield() > 0) { Z_vector = new Complex[get_mfield()][get_n_basis_functions()][get_calN()]; for (int imf = 0; imf < get_mfield(); imf++) for (int inbfs = 0; inbfs < get_n_basis_functions(); inbfs++) { BinaryReader dis; String dataString = directory_name + "/Z_" + String.format("%03d", imf) + "_" + String.format("%03d", inbfs) + ".bin"; if (!isAssetFile) { HttpGet request = new HttpGet(dataString); HttpResponse response = client.execute(request); dis = new BinaryReader(response.getEntity().getContent()); } else { // Read from assets dis = new BinaryReader(context.getAssets().open(dataString)); } float[] Rdata = new float[get_calN()]; float[] Idata = new float[get_calN()]; Rdata = dis.ReadFloat(get_calN()); // read in the real part Idata = dis.ReadFloat(get_calN()); // read in the imagine part for (int i = 0; i < get_calN(); i++) Z_vector[imf][inbfs][i] = new Complex((double) Rdata[i], (double) Idata[i]); dis.close(); } } Log.d(DEBUG_TAG, "Finished reading Z.dat"); initialize_data_vectors(); }
From source file:rb.app.ComplexRBSystem.java
@Override public double RB_solve(int N) { current_N = N;/*from www . java 2s. com*/ theta_a = complex_eval_theta_q_a(); if (N > get_n_basis_functions()) { throw new RuntimeException( "ERROR: N cannot be larger than the number " + "of basis functions in RB_solve"); } if (N == 0) { throw new RuntimeException("ERROR: N must be greater than 0 in RB_solve"); } // Assemble the RB system FieldMatrix<Complex> RB_system_matrix_N = new Array2DRowFieldMatrix<Complex>((new Complex(0, 0)).getField(), N, N); for (int q_a = 0; q_a < get_Q_a(); q_a++) { RB_system_matrix_N = RB_system_matrix_N .add(RB_A_q_vector[q_a].getSubMatrix(0, N - 1, 0, N - 1).scalarMultiply(theta_a.getEntry(q_a))); // scalarMultiply(complex_eval_theta_q_a(q_a) ) ); } // Assemble the RB rhs FieldVector<Complex> RB_rhs_N = new ArrayFieldVector<Complex>(N, new Complex(0d, 0d)); for (int q_f = 0; q_f < get_Q_f(); q_f++) { // Note getSubVector takes an initial index and the number of entries // i.e. the interface is a bit different to getSubMatrix RB_rhs_N = RB_rhs_N.add(RB_F_q_vector[q_f].getSubVector(0, N).mapMultiply(complex_eval_theta_q_f(q_f))); } // Solve the linear system by Gaussian elimination RB_solution = new ArrayFieldVector<Complex>(N, new Complex(0., 0.)); for (int j = 1; j < N; j++) for (int i = j; i < N; i++) { Complex m = RB_system_matrix_N.getEntry(i, j - 1).divide(RB_system_matrix_N.getEntry(j - 1, j - 1)); for (int k = 0; k < N; k++) RB_system_matrix_N.setEntry(i, k, RB_system_matrix_N.getEntry(i, k) .subtract(RB_system_matrix_N.getEntry(j - 1, k).multiply(m))); RB_rhs_N.setEntry(i, RB_rhs_N.getEntry(i).subtract(m.multiply(RB_rhs_N.getEntry(j - 1)))); } RB_solution.setEntry(N - 1, RB_rhs_N.getEntry(N - 1).divide(RB_system_matrix_N.getEntry(N - 1, N - 1))); for (int j = N - 2; j >= 0; j--) { Complex m = new Complex(0., 0.); for (int i = j + 1; i < N; i++) m = m.add(RB_system_matrix_N.getEntry(j, i).multiply(RB_solution.getEntry(i))); RB_solution.setEntry(j, (RB_rhs_N.getEntry(j).subtract(m)).divide(RB_system_matrix_N.getEntry(j, j))); } // Evaluate the dual norm of the residual for RB_solution_vector double epsilon_N = compute_residual_dual_norm(N); // Get lower bound for coercivity constant double alpha_LB = get_SCM_lower_bound(); // If SCM lower bound is negative if (alpha_LB < 0) { // Get an upper bound instead alpha_LB = get_SCM_upper_bound(); } // Store (absolute) error bound double abs_error_bound = epsilon_N / residual_scaling_denom(alpha_LB); // Compute the norm of RB_solution /* RealMatrix RB_inner_product_matrix_N = RB_inner_product_matrix.getSubMatrix(0, N-1, 0, N-1); */ double RB_solution_norm = 0.0d; for (int i = 0; i < N; i++) RB_solution_norm += ((RB_solution.getEntry(i)).multiply((RB_solution.getEntry(i)).conjugate())) .getReal(); RB_solution_norm = Math.sqrt(RB_solution_norm); // Now compute the outputs and associated errors FieldVector<Complex> RB_output_vector_N = new ArrayFieldVector<Complex>(N, new Complex(0d, 0d)); for (int i = 0; i < get_n_outputs(); i++) { RB_outputs[i] = new Complex(0., 0.); RB_output_vector_N = (RB_output_vectors[i][0].getSubVector(0, N)) .mapMultiply(complex_eval_theta_q_l(i, 0)); for (int q_l = 1; q_l < get_Q_l(i); q_l++) RB_output_vector_N = RB_output_vector_N.add( (RB_output_vectors[i][q_l].getSubVector(0, N)).mapMultiply(complex_eval_theta_q_l(i, q_l))); for (int j = 0; j < N; j++) RB_outputs[i] = RB_outputs[i] .add((RB_output_vector_N.getEntry(j).conjugate()).multiply((RB_solution.getEntry(j)))); RB_output_error_bounds[i] = new Complex(compute_output_dual_norm(i) * abs_error_bound, compute_output_dual_norm(i) * abs_error_bound); } cal_derived_output(); return (return_rel_error_bound ? abs_error_bound / RB_solution_norm : abs_error_bound); }
From source file:rb.app.ComplexRBSystem.java
@Override public float[][][] get_truth_sol() { int N = RB_solution.getDimension(); float[][][] truth_sol = new float[get_mfield()][3][get_calN()]; for (int ifn = 0; ifn < get_mfield(); ifn++) { Complex tmpval;// ww w .ja v a 2 s.c o m for (int i = 0; i < get_calN(); i++) { tmpval = new Complex(0., 0.); for (int j = 0; j < N; j++) tmpval = tmpval.add(Z_vector[ifn][j][i].multiply(get_complex_soln_coeff(j))); truth_sol[ifn][0][i] = (float) tmpval.getReal(); truth_sol[ifn][1][i] = (float) tmpval.getImaginary(); } if (get_Q_uL() > 0) { for (int q_uL = 0; q_uL < get_Q_uL(); q_uL++) for (int i = 0; i < get_calN(); i++) { truth_sol[ifn][0][i] += uL_vector[q_uL][i].getReal(); truth_sol[ifn][1][i] += uL_vector[q_uL][i].getImaginary(); } } for (int i = 0; i < get_calN(); i++) truth_sol[ifn][2][i] = (float) Math.sqrt( truth_sol[ifn][0][i] * truth_sol[ifn][0][i] + truth_sol[ifn][1][i] * truth_sol[ifn][1][i]); } return truth_sol; }
From source file:rb.app.ComplexRBSystem.java
@Override public float[][][] get_sweep_truth_sol() { int N = RB_sweep_solution[0][0].length; int numSweep = RB_sweep_solution.length; Complex[][] RB_sweep_sol = new Complex[numSweep][N]; for (int i = 0; i < numSweep; i++) for (int j = 0; j < N; j++) RB_sweep_sol[i][j] = new Complex(RB_sweep_solution[i][0][j], RB_sweep_solution[i][1][j]); float[][][] truth_sol = new float[get_mfield()][3][get_calN() * numSweep]; for (int ifn = 0; ifn < get_mfield(); ifn++) { Complex tmpval;//from w w w. ja v a2 s . c o m for (int iSweep = 0; iSweep < numSweep; iSweep++) { for (int i = 0; i < get_calN(); i++) { tmpval = new Complex(0., 0.); for (int j = 0; j < N; j++) tmpval = tmpval.add(Z_vector[ifn][j][i].multiply(RB_sweep_sol[iSweep][j])); truth_sol[ifn][0][iSweep * get_calN() + i] = (float) tmpval.getReal(); truth_sol[ifn][1][iSweep * get_calN() + i] = (float) tmpval.getImaginary(); } } if (get_Q_uL() > 0) { for (int q_uL = 0; q_uL < get_Q_uL(); q_uL++) for (int iSweep = 0; iSweep < numSweep; iSweep++) for (int i = 0; i < get_calN(); i++) { truth_sol[ifn][0][iSweep * get_calN() + i] += uL_vector[q_uL][i].getReal(); truth_sol[ifn][1][iSweep * get_calN() + i] += uL_vector[q_uL][i].getImaginary(); } } for (int i = 0; i < get_calN() * numSweep; i++) truth_sol[ifn][2][i] = (float) Math.sqrt( truth_sol[ifn][0][i] * truth_sol[ifn][0][i] + truth_sol[ifn][1][i] * truth_sol[ifn][1][i]); } return truth_sol; }
From source file:rb.app.ComplexRBSystem.java
public void cal_derived_output() { if (is_derived_output()) { Method meth;//w ww .ja va 2s . co m try { Class partypes[] = new Class[1]; partypes[0] = double[].class; meth = mAffineFnsClass.getMethod("cal_derived_output", partypes); } catch (NoSuchMethodException nsme) { throw new RuntimeException("getMethod for cal_derived_output failed", nsme); } try { Object arglist[] = new Object[1]; double[] input = new double[4]; for (int i = 0; i < get_n_outputs(); i++) { input[0] = RB_outputs[i].getReal(); input[1] = RB_outputs[i].getImaginary(); input[2] = RB_output_error_bounds[i].getReal(); input[3] = RB_output_error_bounds[i].getImaginary(); arglist[0] = input; Object theta_obj = meth.invoke(mTheta, arglist); double[] output = (double[]) theta_obj; RB_outputs[i] = new Complex(output[0], output[1]); RB_output_error_bounds[i] = new Complex(output[2], output[3]); } } catch (IllegalAccessException iae) { throw new RuntimeException(iae); } catch (InvocationTargetException ite) { throw new RuntimeException(ite.getCause()); } } }
From source file:rb.app.RBBase.java
public Complex complex_eval_theta_q_a(int q) { Method meth;/*from w ww .ja v a 2 s. co m*/ //Complex c; try { // Get a reference to get_n_L_functions, which does not // take any arguments Class partypes[] = new Class[3]; partypes[0] = Integer.TYPE; partypes[1] = double[].class; partypes[2] = boolean.class; meth = mAffineFnsClass.getMethod("evaluateA", partypes); } catch (NoSuchMethodException nsme) { throw new RuntimeException("getMethod for evaluateA failed", nsme); } Double theta_val_r, theta_val_i; try { Object arglist[] = new Object[3]; arglist[0] = new Integer(q); arglist[1] = current_parameters.getArray(); arglist[2] = true; Object theta_obj = meth.invoke(mTheta, arglist); theta_val_r = (Double) theta_obj; arglist[2] = false; theta_val_i = (Double) meth.invoke(mTheta, arglist); } catch (IllegalAccessException iae) { throw new RuntimeException(iae); } catch (InvocationTargetException ite) { throw new RuntimeException(ite.getCause()); } Complex c = new Complex(theta_val_r.doubleValue(), theta_val_i.doubleValue()); return c; }
From source file:rb.app.RBBase.java
public FieldVector<Complex> complex_eval_theta_q_a() { Method meth;// ww w . j av a 2 s. c om //Complex c; try { // Get a reference to get_n_L_functions, which does not // take any arguments Class partypes[] = new Class[1]; partypes[0] = double[].class; meth = mAffineFnsClass.getMethod("evaluateA_array", partypes); } catch (NoSuchMethodException nsme) { FieldVector<Complex> c = new ArrayFieldVector<Complex>(mQ_a, new Complex(0d, 0d)); for (int i = 0; i < mQ_a; i++) c.setEntry(i, complex_eval_theta_q_a(i)); return c; //throw new RuntimeException("getMethod for evaluateA failed", nsme); } double[][] theta_val; try { Object arglist[] = new Object[1]; arglist[0] = current_parameters.getArray(); Object theta_obj = meth.invoke(mTheta, arglist); theta_val = (double[][]) theta_obj; } catch (IllegalAccessException iae) { throw new RuntimeException(iae); } catch (InvocationTargetException ite) { throw new RuntimeException(ite.getCause()); } FieldVector<Complex> c = new ArrayFieldVector<Complex>(mQ_a, new Complex(0d, 0d)); for (int i = 0; i < mQ_a; i++) c.setEntry(i, new Complex(theta_val[i][0], theta_val[i][1])); return c; }
From source file:rb.app.RBBase.java
public Complex complex_eval_theta_q_f(int q) { Method meth;//from w ww. ja v a 2 s . co m //Complex c; try { // Get a reference to get_n_L_functions, which does not // take any arguments Class partypes[] = new Class[3]; partypes[0] = Integer.TYPE; partypes[1] = double[].class; partypes[2] = boolean.class; meth = mAffineFnsClass.getMethod("evaluateF", partypes); } catch (NoSuchMethodException nsme) { throw new RuntimeException("getMethod for evaluateF failed", nsme); } Double theta_val_r, theta_val_i; try { Object arglist[] = new Object[3]; arglist[0] = new Integer(q); arglist[1] = current_parameters.getArray(); arglist[2] = true; Object theta_obj = meth.invoke(mTheta, arglist); theta_val_r = (Double) theta_obj; arglist[2] = false; theta_val_i = (Double) meth.invoke(mTheta, arglist); } catch (IllegalAccessException iae) { throw new RuntimeException(iae); } catch (InvocationTargetException ite) { throw new RuntimeException(ite.getCause()); } Complex c = new Complex(theta_val_r.doubleValue(), theta_val_i.doubleValue()); return c; }
From source file:rb.app.RBBase.java
public Complex complex_eval_theta_q_l(int n, int q) { Method meth;/*from w w w .j av a 2 s .c o m*/ //Complex c; try { // Get a reference to get_n_L_functions, which does not // take any arguments Class partypes[] = new Class[4]; partypes[0] = Integer.TYPE; partypes[1] = Integer.TYPE; partypes[2] = double[].class; partypes[3] = boolean.class; meth = mAffineFnsClass.getMethod("evaluateL", partypes); } catch (NoSuchMethodException nsme) { throw new RuntimeException("getMethod for evaluateL failed", nsme); } Double theta_val_r, theta_val_i; try { Object arglist[] = new Object[4]; arglist[0] = new Integer(n); arglist[1] = new Integer(q); arglist[2] = current_parameters.getArray(); arglist[3] = true; Object theta_obj = meth.invoke(mTheta, arglist); theta_val_r = (Double) theta_obj; arglist[3] = false; theta_val_i = (Double) meth.invoke(mTheta, arglist); } catch (IllegalAccessException iae) { throw new RuntimeException(iae); } catch (InvocationTargetException ite) { throw new RuntimeException(ite.getCause()); } Complex c = new Complex(theta_val_r.doubleValue(), theta_val_i.doubleValue()); return c; }
From source file:rb.ComplexRBSystem.java
@Override public void loadOfflineData_rbappmit(AModelManager m) throws IOException { isReal = false;/* w w w .ja v a 2s . c o m*/ // Find out dimension of the RB space { BufferedReader reader = m.getBufReader("n_bfs.dat"); set_n_basis_functions(Integer.parseInt(reader.readLine())); reader.close(); } Log.d(DEBUG_TAG, "Finished reading n_bfs.dat"); // Read in output data if (getNumOutputs() > 0) { // Get output dual norms { RB_output_vectors = (FieldVector<Complex>[][]) new FieldVector<?>[getNumOutputs()][]; output_dual_norms = new Complex[getNumOutputs()][]; for (int i = 0; i < getNumOutputs(); i++) { String[] dual_norms_tokens; { BufferedReader reader = m .getBufReader("output_" + String.format("%03d", i) + "_dual_norms.dat"); dual_norms_tokens = reader.readLine().split(" "); reader.close(); } { int Q_l_hat = getQl(i) * (getQl(i) + 1) / 2; output_dual_norms[i] = new Complex[Q_l_hat]; for (int q = 0; q < Q_l_hat; q++) { output_dual_norms[i][q] = new Complex(Double.parseDouble(dual_norms_tokens[q]), Double.parseDouble(dual_norms_tokens[Q_l_hat + q])); } } { RB_output_vectors[i] = (FieldVector<Complex>[]) new FieldVector<?>[getQl(i)]; String[] output_i_tokens; for (int q_l = 0; q_l < getQl(i); q_l++) { // Now read in the RB output vectors { BufferedReader reader_i = m.getBufReader("output_" + String.format("%03d", i) + "_" + String.format("%03d", q_l) + ".dat"); output_i_tokens = reader_i.readLine().split(" "); reader_i.close(); } RB_output_vectors[i][q_l] = new ArrayFieldVector<Complex>(getNBF(), new Complex(0d, 0d)); for (int j = 0; j < getNBF(); j++) { RB_output_vectors[i][q_l].setEntry(j, new Complex(Double.parseDouble(output_i_tokens[j]), Double.parseDouble(output_i_tokens[getNBF() + j]))); } } } } } Log.d(DEBUG_TAG, "Finished reading output data"); } else Log.d(DEBUG_TAG, "No output data set. (get_n_outputs() == 0)"); /* * // Read in the inner product matrix { InputStreamReader isr; String * dataString = directory_name + "/RB_inner_product_matrix.dat"; * * if(!isAssetFile) { HttpGet request = new HttpGet(dataString); * HttpResponse response = client.execute(request); isr = new * InputStreamReader(response.getEntity() .getContent()); } else { // * Read from assets isr = new InputStreamReader( * context.getAssets().open(dataString)); } BufferedReader * BufferedReader reader = new BufferedReader(isr,buffer_size); * * String String line = reader.readLine(); String[] tokens = * line.split(" "); * * // Set the size of the inner product matrix RB_inner_product_matrix = * new Array2DRowRealMatrix(n_bfs, n_bfs); * * // Fill the matrix int count = 0; for (int i = 0; i < n_bfs; i++) for * (int j = 0; j < n_bfs; j++) { RB_inner_product_matrix.setEntry(i, j, * Double .parseDouble(tokens[count])); count++; } reader.close(); } * * Log.d(DEBUG_TAG, "Finished reading RB_inner_product_matrix.dat"); */ // Read in the F_q vectors { RB_F_q_vector = (FieldVector<Complex>[]) new FieldVector<?>[getQf()]; String[] tokens; for (int q_f = 0; q_f < getQf(); q_f++) { { BufferedReader reader = m.getBufReader("RB_F_" + String.format("%03d", q_f) + ".dat"); tokens = reader.readLine().split(" "); reader.close(); } // Set the size of the inner product matrix RB_F_q_vector[q_f] = new ArrayFieldVector<Complex>(getNBF(), new Complex(0d, 0d)); // Fill the vector for (int i = 0; i < getNBF(); i++) { RB_F_q_vector[q_f].setEntry(i, new Complex(Double.parseDouble(tokens[i]), Double.parseDouble(tokens[getNBF() + i]))); } } Log.d(DEBUG_TAG, "Finished reading RB_F_q data"); } // Read in the A_q matrices { RB_A_q_vector = (FieldMatrix<Complex>[]) Array.newInstance(FieldMatrix.class, getQa());// (FieldMatrix<Complex>[]) // new // FieldMatrix<?>[get_Q_a()]; String[] tokens; for (int q_a = 0; q_a < getQa(); q_a++) { { BufferedReader reader = m.getBufReader("RB_A_" + String.format("%03d", q_a) + ".dat"); tokens = reader.readLine().split(" "); reader.close(); } // Set the size of the inner product matrix RB_A_q_vector[q_a] = new Array2DRowFieldMatrix<Complex>((new Complex(0, 0)).getField(), getNBF(), getNBF()); // Fill the vector int count = 0; for (int i = 0; i < getNBF(); i++) for (int j = 0; j < getNBF(); j++) { RB_A_q_vector[q_a].setEntry(i, j, new Complex(Double.parseDouble(tokens[count]), Double.parseDouble(tokens[count + getNBF() * getNBF()]))); count++; } } Log.d(DEBUG_TAG, "Finished reading RB_A_q data"); } // Read in F_q representor norm data { BufferedReader reader = m.getBufReader("Fq_norms.dat"); String[] tokens = reader.readLine().split(" "); reader.close(); // Declare the array int Q_f_hat = getQf() * (getQf() + 1) / 2; Fq_representor_norms = new Complex[Q_f_hat]; // Fill it for (int i = 0; i < Q_f_hat; i++) { Fq_representor_norms[i] = new Complex(Double.parseDouble(tokens[i * 2 + 0]), Double.parseDouble(tokens[i * 2 + 1])); } Log.d(DEBUG_TAG, "Finished reading Fq_norms.dat"); } // Read in Fq_Aq representor norm data { BufferedReader reader = m.getBufReader("Fq_Aq_norms.dat"); String[] tokens = reader.readLine().split(" "); reader.close(); reader = null; // Declare the array Fq_Aq_representor_norms = new Complex[getQf()][getQa()][getNBF()]; double[][][] Rdata = new double[getQf()][getQa()][getNBF()]; double[][][] Idata = new double[getQf()][getQa()][getNBF()]; // Fill it int count = 0; for (int q_f = 0; q_f < getQf(); q_f++) for (int q_a = 0; q_a < getQa(); q_a++) { for (int i = 0; i < getNBF(); i++) { Rdata[q_f][q_a][i] = Double.parseDouble(tokens[count]); count++; } for (int i = 0; i < getNBF(); i++) { Idata[q_f][q_a][i] = Double.parseDouble(tokens[count]); count++; } } for (int q_f = 0; q_f < getQf(); q_f++) for (int q_a = 0; q_a < getQa(); q_a++) for (int i = 0; i < getNBF(); i++) Fq_Aq_representor_norms[q_f][q_a][i] = new Complex(Rdata[q_f][q_a][i], Idata[q_f][q_a][i]); Log.d(DEBUG_TAG, "Finished reading Fq_Aq_norms.dat"); } MathObjectReader mr = m.getMathObjReader(); // Read in Aq_Aq representor norm data { // Declare the array int Q_a_hat = getQa() * (getQa() + 1) / 2; Aq_Aq_representor_norms = new Complex[Q_a_hat][getNBF()][getNBF()]; int count = 0; double[][] Rdata2 = null, Idata2 = null; for (int i = 0; i < getQa(); i++) for (int j = i; j < getQa(); j++) { String file = "Aq_Aq_" + String.format("%03d", i) + "_" + String.format("%03d", j) + "_norms.bin"; int n = getNBF(); InputStream in = m.getInStream(file); try { Rdata2 = mr.readRawDoubleMatrix(in, n, n); Idata2 = mr.readRawDoubleMatrix(in, n, n); } catch (IOException io) { Log.e("ComplexRBSystem", "IOException with file " + file, io); } finally { in.close(); in = null; } for (int k = 0; k < n; k++) for (int l = 0; l < n; l++) Aq_Aq_representor_norms[count][k][l] = new Complex(Rdata2[k][l], Idata2[k][l]); count++; } Log.d(DEBUG_TAG, "Finished reading Aq_Aq_norms.dat"); } // // Read calN number // { // if (getNumFields() > 0) { // BufferedReader reader = m.getBufReader("calN.dat"); // // String line = reader.readLine(); // // set_calN(Integer.parseInt(line)); // reader.close(); // } // // Log.d(DEBUG_TAG, "Finished reading calN.dat"); // } int n = getGeometry().getNumVertices(); // Reading uL data { if (getQuL() > 0) { uL_vector = new Complex[getQuL()][n]; float[] Rdata3, Idata3; for (int q_uL = 0; q_uL < getQuL(); q_uL++) { InputStream in = m.getInStream("uL_" + String.format("%03d", q_uL) + ".bin"); try { Rdata3 = mr.readRawFloatVector(in, n); Idata3 = mr.readRawFloatVector(in, n); } finally { in.close(); } for (int i = 0; i < n; i++) uL_vector[q_uL][i] = new Complex(Rdata3[i], Idata3[i]); } } Log.d(DEBUG_TAG, "Finished reading uL.dat"); } // Read in Z data { if (getNumDoFFields() > 0) { Z_vector = new Complex[getNumDoFFields()][getNBF()][n]; float[] Rdata3, Idata3; for (int imf = 0; imf < getNumDoFFields(); imf++) for (int inbfs = 0; inbfs < getNBF(); inbfs++) { InputStream in = m.getInStream( "Z_" + String.format("%03d", imf) + "_" + String.format("%03d", inbfs) + ".bin"); try { Rdata3 = mr.readRawFloatVector(in, n); Idata3 = mr.readRawFloatVector(in, n); } finally { in.close(); } for (int i = 0; i < n; i++) Z_vector[imf][inbfs][i] = new Complex(Rdata3[i], Idata3[i]); } } Log.d(DEBUG_TAG, "Finished reading Z.dat"); } initialize_data_vectors(); }