1
resposta

Impressão em Arquivo TXT

Bom dia pessoal, vai mais um probleminha no meu código. Primeiro, ele não está aceitando a chamada a TecplotProcedure(xynode,volume,qTecne). O compilador acusa o erro abaixo. Diz que "Cannot make a static reference to the non-static field". Segundo, eu não estou conseguindo fazer a impressão das várias variáveis Double por linha. O ps.println não imprime mais de uma variável Double por linha. Então, eu preciso que me dêem uma alternativa de impressão para eu imprimir as variáveis Double por linha no meu arquivo "DynamicContours.txt". Obrigado e aguardo seu retorno, Edisson Sávio.

package FiveSpeciesOneTemperatureTecne;

    import java.io.IOException;
    import java.io.PrintStream;
    import General.AlgorithmProperties;
    import General.ComputationalProperties;
    import General.GeneralProperties;

        public class Tecplot

{        ComputationalProperties comprop = new ComputationalProperties();
        int imax = comprop.getImax();
        int jmax = comprop.getJmax();

        double xynode [] [] [] = new double [imax+1] [jmax+1] [3];
        double qTecne [] [] [] = new double [imax+1] [jmax+1] [15];
        double volume [] [] = new double [imax+1] [jmax+1];
        double primitiveVariables [] [] [] = new double [imax+1] [jmax+1] [30];

        public static void main(String[] args) throws IOException

{        TecplotProcedure(xynode,volume,qTecne); }

        public static void TecplotProcedure(double xynode [] [] [], double volume [] [], double qTecne [] [] []) throws IOException

{        ComputationalProperties comprop = new ComputationalProperties();
        int imax = comprop.getImax();
        int jmax = comprop.getJmax();

        double primitiveVariables [] [] [] = new double [imax+1] [jmax+1] [30];
        String flow;
        String scheme;

        PrintStream ps = new PrintStream ("DynamicContours.txt");

        GeneralProperties genprop = new GeneralProperties();
        flow = genprop.getFlow();

        AlgorithmProperties algoprop = new AlgorithmProperties();
        scheme = algoprop.getScheme();

        ps.format(" TITLE = 'ISOLINES'");

        if ((flow.equals("Turbulent Flow")) && ((scheme.equals("MacCormack (1969) Scheme ME")) || (scheme.equals("Maciel (2015) Scheme ME"))))
{            ps.format(" VARIABLES = ","'x',","'y',","'u',","'v',","'Pr',","'Mach',","'Den',","'Z',","'T',","'k',","'w',","'Qh',","'Qs',","'Bx',","'By'"); }
        else
{                if ((flow.equals("Turbulent Flow")) && ((scheme != "MacCormack (1969) Scheme ME") || (scheme != "Maciel (2015) Scheme ME")))
{                    ps.format(" VARIABLES = ","'x',","'y',","'u',","'v',","'Pr',","'Mach',","'Den',","'En',","'H',","'T',","'k',","'w',","'Qh',","'Qs'"); }    } } } }

        ps.println();
        ps.format(" ZONE T = 'INTERNO', i = ",imax,", j = ",jmax,", F = point");
        ps.println();
        for (int j = 1; j <= jmax; j++)
{            for (int i = 1; i <= imax; i++)
{                if ((flow.equals("Turbulent Flow")) && ((scheme.equals("MacCormack (1969) Scheme ME")) || (scheme.equals("Maciel (2015) Scheme ME"))))
{                    ps.println (xynode [i] [j] [1],xynode [i] [j] [2],primitiveVariables [i] [j] [2],primitiveVariables [i] [j] [3],
                                        primitiveVariables [i] [j] [17],primitiveVariables [i] [j] [26],primitiveVariables [i] [j] [1],primitiveVariables [i] [j] [4],
                                        primitiveVariables [i] [j] [16],primitiveVariables [i] [j] [10],primitiveVariables [i] [j] [11],
                                       primitiveVariables [i] [j] [12],primitiveVariables [i] [j] [13],primitiveVariables [i] [j] [14],primitiveVariables[i] [j] [15]); }
                else
{                        if ((flow.equals("Turbulent Flow")) && ((scheme != "MacCormack (1969) Scheme ME") || (scheme != "Maciel (2015) Scheme ME")))
{                            ps.println(xynode [i] [j] [1],xynode [i] [j] [2],primitiveVariables [i] [j] [2],primitiveVariables [i] [j] [3],
                                            primitiveVariables [i] [j] [17],primitiveVariables [i] [j] [26],primitiveVariables [i] [j] [1],primitiveVariables [i] [j] [4],
                                            primitiveVariables [i] [j] [18],primitiveVariables [i] [j] [16],primitiveVariables [i] [j] [10],
                                             primitiveVariables [i] [j] [11],primitiveVariables [i] [j] [12],primitiveVariables [i] [j] [13]); } } } } }
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Cannot make a static reference to the non-static field xynode
    Cannot make a static reference to the non-static field volume
    Cannot make a static reference to the non-static field qTecne

    at renecoreflows2d/FiveSpeciesOneTemperatureTecne.Tecplot.main(Tecplot.java:22)
1 resposta

Oi Edisson, tudo bem?

Há duas alternativas nesse caso:

1 - você torna os atributos xynode, volume e qTecne estáticos, fazendo:

double static xynode [] [] [] = new double [imax+1] [jmax+1] [3];
double static qTecne [] [] [] = new double [imax+1] [jmax+1] [15];
double static volume [] [] = new double [imax+1] [jmax+1];

2 - você pode passar a declaração destes atributos para dentro do método main, e depois passar tudo como parâmetro do TecplotProcedure. Dessa forma, você também pode apagar primitiveVariables como atributo, e deixá-la apenas dentro do procedure. Acredito que essa seja a melhor alternativa, visto que o restante do seu projeto já está nesse padrão.

public class Tecplot {

    public static void main(String[] args) throws IOException {
        ComputationalProperties comprop = new ComputationalProperties();
        int imax = comprop.getImax();
        int jmax = comprop.getJmax();

        double xynode[][][] = new double[imax + 1][jmax + 1][3];
        double qTecne[][][] = new double[imax + 1][jmax + 1][15];
        double volume[][] = new double[imax + 1][jmax + 1];
        TecplotProcedure(xynode, volume, qTecne, imax, jmax);
    }

    public static void TecplotProcedure(double xynode[][][], double volume[][], double qTecne[][][], int imax, int jmax) throws IOException {
        ComputationalProperties comprop = new ComputationalProperties();
        int imax = comprop.getImax();
        int jmax = comprop.getJmax();

        double primitiveVariables[][][] = new double[imax + 1][jmax + 1][30];
        String flow;
        String scheme;

        PrintStream ps = new PrintStream("DynamicContours.txt");

        GeneralProperties genprop = new GeneralProperties();
        flow = genprop.getFlow();

        AlgorithmProperties algoprop = new AlgorithmProperties();
        scheme = algoprop.getScheme();

        ps.format(" TITLE = 'ISOLINES'");

        if ((flow.equals("Turbulent Flow")) && ((scheme.equals("MacCormack (1969) Scheme ME")) || (scheme.equals("Maciel (2015) Scheme ME")))) {
            ps.format(" VARIABLES = ", "'x',", "'y',", "'u',", "'v',", "'Pr',", "'Mach',", "'Den',", "'Z',", "'T',", "'k',", "'w',", "'Qh',", "'Qs',", "'Bx',", "'By'");
        } else {
            if ((flow.equals("Turbulent Flow")) && ((scheme != "MacCormack (1969) Scheme ME") || (scheme != "Maciel (2015) Scheme ME"))) {
                ps.format(" VARIABLES = ", "'x',", "'y',", "'u',", "'v',", "'Pr',", "'Mach',", "'Den',", "'En',", "'H',", "'T',", "'k',", "'w',", "'Qh',", "'Qs'");
            }
        }
    }


        ps.println();
        ps.format(" ZONE T = 'INTERNO', i = ",imax,", j = ",jmax,", F = point");
        ps.println();
        for(
    int j = 1;
    j<=jmax;j++)

    {
        for (int i = 1; i <= imax; i++) {
            if ((flow.equals("Turbulent Flow")) && ((scheme.equals("MacCormack (1969) Scheme ME")) || (scheme.equals("Maciel (2015) Scheme ME")))) {
                ps.println(xynode[i][j][1], xynode[i][j][2], primitiveVariables[i][j][2], primitiveVariables[i][j][3],
                        primitiveVariables[i][j][17], primitiveVariables[i][j][26], primitiveVariables[i][j][1], primitiveVariables[i][j][4],
                        primitiveVariables[i][j][16], primitiveVariables[i][j][10], primitiveVariables[i][j][11],
                        primitiveVariables[i][j][12], primitiveVariables[i][j][13], primitiveVariables[i][j][14], primitiveVariables[i][j][15]);
            } else {
                if ((flow.equals("Turbulent Flow")) && ((scheme != "MacCormack (1969) Scheme ME") || (scheme != "Maciel (2015) Scheme ME"))) {
                    ps.println(xynode[i][j][1], xynode[i][j][2], primitiveVariables[i][j][2], primitiveVariables[i][j][3],
                            primitiveVariables[i][j][17], primitiveVariables[i][j][26], primitiveVariables[i][j][1], primitiveVariables[i][j][4],
                            primitiveVariables[i][j][18], primitiveVariables[i][j][16], primitiveVariables[i][j][10],
                            primitiveVariables[i][j][11], primitiveVariables[i][j][12], primitiveVariables[i][j][13]);
                }
            }
        }
    }
}

Espero ter ajudado, abraços e bons estudos!