public Vector getRealU() {
    // 4.Weak form
    WeakFormLaplace2D weakForm = new WeakFormLaplace2D();
    plotFunction(mesh, coef_q, "qReal.dat");
    weakForm.setParam(coef_q, FC.C0, null, null);
    // Right hand side(RHS): f(x) = -4.0
    weakForm.setF(FC.c(-4.0));

    // 5.Assembly process
    AssemblerScalar assembler = new AssemblerScalar(mesh, weakForm);
    System.out.println("Begin Assemble...");
    assembler.assemble();
    SparseMatrix stiff = assembler.getStiffnessMatrix();
    SparseVector load = assembler.getLoadVector();
    // Boundary condition
    assembler.imposeDirichletCondition(diri);
    System.out.println("Assemble done!");

    // 6.Solve linear system
    Solver solver = new Solver();
    Vector u = solver.solveCG(stiff, load);
    System.out.println("u=");
    for (int i = 1; i <= u.getDim(); i++) System.out.println(String.format("%.3f", u.get(i)));

    plotVector(mesh, u, "uReal.dat");
    return u;
  }