Ir ao conteúdo

Undefined Symbol?!?!


SergioAAv

Posts recomendados

Postado

Pessoal, estou com um problema que parece ser muito simples de resolver mas não estou conseguindo.

Meu código realiza vários cálculos iterativos e eu preciso implementar uma condição de parada para quando ele atinge regime permanente. O problema está na declaração das variáveis. Eu declarei 2 novas variáveis pra isso mas quando uso o debug pra ver se está td certo aparece escrito do lado das variáveis que eu criei:

E2451 Undefined symbol 'modauxuo'

E2451 Undefined symbol 'modauxu'

As variáveis estão declaradas no início do programa junto com todas as outras. Onde estão estas mensagens de erro deveria aparecer o valor das variáveis, no caso como acabei de declara-las, devia ser 1 em ambas (elas foram declaradas como double modauxuo=1,modauxu=1;).

Eu ainda não usei as variáveis em nehuma parte do código. Simplesmente declarei e rodei com o debug pra ver se estava tudo certo.

Alguém sabe o que pode ser?? Eu não sei mais o que tentar pra resolver isso... Se precisarem do código do programa me avisem que eu posto aqui.

Desde já, obrigado.

Postado

Bom, aí está o código... a função é meio grande mas o que interessa mesmo são as duas primeiras linhas onde estão declaradas as variáveis que citei.

{
double modauxuo=1;
double modauxu=1;
double dx,dy,dz,num,nun,dtemp,t;
double Numi,Numo,Numit,Numot;
double FS,DIV,divX,divY,divZ;
register int i,j,k;
int iter,limit,cont,cta;
int pasost=0, plotam, auxt, incam;
double auxplotu, auxplotv, auxplotvel;//Variáveis auxiliares para acompanhamento
double auxcp=1, auxuo, auxu, auxuo1, auxu1;//Variável auxiliar para critério de parada


incam=tf*1000/numam;//Cálculo do valor de incremento para plotagem dos gráficos de acompanhamento
//FILE *fa;

/////////////////////////////////////////////////////////////////
// 1: Función ARITMÉTICA +
tipoFMD = 2; // 2: Función PONDERADA +
// 3: Función TRAPEZOIDAL +
/////////////////////////////////////////////////////////////////
FS = 0.5; // FACTOR DE SEGURIDAD +
/////////////////////////////////////////////////////////////////
dtemp = 0.05; // C/ctos SEG DESEA GRAVAR temp +
/////////////////////////////////////////////////////////////////
nun = dtemp;
num = dtsai;
limit = 1000;
iter = 0;
cont = cta = 0;
Numit = Numot =0.0;
t = dt;
auxt=(t+0.00000005)*1000;
plotam=auxt;
Recupera(&t,&cont,&pasost,&nun,&num,&Numit,&Numot);
// SALIDA: EVOLUCIÓN TEMPORAL +++++++++++++++++++++++++++++++++
if(recup == 0) {
saidaCabecalho();
}
// CÁLCULO DE L0S COEFICIENTES PARA pp ++++++++++++++++++++++++
coeficientePP();
//Transferencia dos dados para a janela de acompanhamento
Acomp->Edit2->Text=ExtractFileName(X);
Acomp->Edit3->Text=ExtractFileName(Y);
Acomp->Edit4->Text=ExtractFileName(M);
Acomp->Edit5->Text=ExtractFileName(N);
// Limpa a série de dados do gráfico de acompanhamento
Acomp->Series1->Clear();//velocidade u
//Acomp->Series2->Clear();//velocidade v
Acomp->Series3->Clear();//Resíduo
// Plotagem dos dados para tempo = 0
Acomp->Series1->AddXY(0.0,auxplotu,"",clRed);//Velocidade u
//Acomp->Series2->AddXY(0.0,auxplotv,"",clGreen);//Velocidade v
Acomp->Series3->AddXY(0.0,resm,"",clYellow);//Resíduo

// LOOP PARA t ++++++++++++++++++++++++++++++++++++++++++++++++
do {
iter = 0;
//Critério de parada quando atinge regime permanente

if(auxcp > 0.0001)
{
// LOOP PARA inter +++++++++++++++++++++++++++++++++++++++++
do {
if(iter >= limit)
Acomp->Edit15->Text="Não alcançou a tolerância em "+ExtractFileName(limit)+" iterações.";
//printf("Nao alcanzou TOL em %i iteracoes \n",limit); -> Código original
iter += 1;
// ESTIMA CAMPO DE VELOCIDADES +++++++++++++++++++++++++
estimaU();
// CÁLCULO DEL CAMPO DE pp +++++++++++++++++++++++++++++
for(k=1; k<=L; k++) {
dz = zf[k]-zf[k-1];
for(j=1; j<=N; j++) {
dy = yf[j]-yf[j-1];
for(i=1; i<=M; i++) {
dx = xf[i]-xf[i-1];
b[i][j][k] = ((u[i][j][k]-u[i-1][j][k])/dx
+ (v[i][j][k]-v[i][j-1][k])/dy
+ (w[i][j][k]-w[i][j][k-1])/dz)/ dt;
}
}
}
//////////////////////////////////////////////////////////
if(ccz==0 || ccz==1) Sip(); // Solución del sistema de +
else Sip1(); // +
//GCpC(); // ecuaciones lineares +
//MSip(); // +
//////////////////////////////////////////////////////////
Acomp->Edit7->Text=ExtractFileName(t);
//printf(" t=%lf",t); -> Código original
Acomp->Edit11->Text=ExtractFileName(noit);
//printf(" noit=%i \n",noit); -> Código original
Acomp->Edit8->Text=ExtractFileName(dt);
//printf(" dt=%e",dt); -> Código original
Acomp->Edit13->Text=ExtractFileName(resm);
//printf(" resm=%e \n",resm); -> Código original
// CORRIGE CAMPO DE PRESIÓN ++++++++++++++++++++++++++++
for(k=1; k<=L; k++) {
for(j=1; j<=N; j++) {
for(i=1; i<=M; i++) {
p[i][j][k] = p[i][j][k] + pp[i][j][k];
}
}
}
ccontornoP();
// CORRIGE LOS CAMPOS DE VELOCIDADES +++++++++++++++++++
corrigeU();
// CALCULA EL CAMPO DE TEMPERATURA +++++++++++++++++++++
if(dtaT != 0.0) calculaT();
// DIVERGENTE ++++++++++++++++++++++++++++++++++++++++++
divMAX = 0.0;
for(k=1; k<=L; k++) {
dz = zf[k]-zf[k-1];
for(j=1; j<=N; j++) {
dy = yf[j]-yf[j-1];
for(i=1; i<=M; i++) {
dx = xf[i]-xf[i-1];
divX = (u[i][j][k]-u[i-1][j][k])/ dx;
divY = (v[i][j][k]-v[i][j-1][k])/ dy;
divZ = (w[i][j][k]-w[i][j][k-1])/ dz;
DIV = divX + divY + divZ;
//divMAX = max(fabs(DIV[i][j][k]),divMAX);
divMAX = (fabs(DIV) > divMAX) ?
fabs(DIV) : divMAX;
}
}
}
Acomp->Edit6->Text=ExtractFileName(iter);
//printf(" iter=%i",iter); -> Código original
Acomp->Edit14->Text=ExtractFileName(divMAX);
//printf(" divMAX=%e \n\n",divMAX); -> Código original
// CRITERIO DE CONVERGENCIA ++++++++++++++++++++++++++++
} while (divMAX > TOL);

// TRANSFERENCIA PARA LOS TIEMPOS ANTERIORES +++++++++++++++
for(k=0; k<=L+1; k++) {
for(j=0; j<=N+1; j++) {
for(i=0; i<=M+1; i++) {
uo[i][j][k] = u[i][j][k];
vou[i][j][k] = v[i][j][k];
wo[i][j][k] = w[i][j][k];
}
}
}
for(k=1; k<=L; k++) {
for(j=1; j<=N; j++) {
for(i=1; i<=M; i++) {
u[i][j][k] = ADSu[i][j][k];
v[i][j][k] = ADSv[i][j][k];
w[i][j][k] = ADSw[i][j][k];
}
}
}
// CALCULA VISCOSIDAD TURBULENTA +++++++++++++++++++++++++++
switch(ModTurb) {
case 1: ModSmag();
break;
case 2: ModDin();
break;
case 3: //ModFEs();
break;
}
// CALCULA EL PASO DE TIEMPO +++++++++++++++++++++++++++++++
switch(cdt) {
case 1: cta += 1;
if(cta == 6) cdt = 2;
break;
case 2: dt = CFL()*FS;
break;
}
// CÁLCULO ESTADÍSTICO +++++++++++++++++++++++++++++++++++++
if(t >= (tf-tmdiat)) {
// NÚMERO DE NUSSELT ++++++++++++++++++++++++++++++++++++
Numi = 0.0;
Numo = 0.0;
for(k=1; k<=L; k++) {
for(j=1; j<=N; j++) {
NuLi[j][k] = (T[0][j][k]-T[1][j][k]) /(xc[1]-xf[0]);
NuLo[j][k] = (T[M][j][k]-T[M+1][j][k]) /(xf[M]-xc[M]);
Numi += NuLi[j][k];
Numo += NuLo[j][k];
}
}
Numi = Numi/(N*L);
Numo = Numo/(N*L);
// OUTRAS
pasost += 1;
Numit += Numi;
Numot += Numo;
MdiaTemp(t,pasost);
}
// FRECUENCIA DE SALIDA PARA temp ++++++++++++++++++++++++++
if(t>=(nun-dt*0.8) && t<(nun+dt*0.8)) {
saidaTemp(t);
saidaSondasX(t);
saidaSondasY(t);
nun += dtemp;
}
// CRITERIO PARA SALIDA DE DATOS +++++++++++++++++++++++++++
if(t>=(num-dt*0.8) && t<(num+dt*0.8)) {
cont += 1;
//saiTecpBin();
saiTecplot(cont);
saiRecupera(cont,pasost,nun,num,t+dt,Numit,Numot);
num += dtsai;
}
if(plotam == auxt)//Plotagem na janela de acompanhamento
{
auxplotu=(uo[M/2][1][L/2]+uo[M/2][1][L/2+1])*0.5;
auxplotv=(vou[M/2][0][L/2]+vou[M/2+1][0][L/2]+vou[M/2+1][0][L/2+1]+vou[M/2][0][L/2+1]+vou[M/2][1][L/2]+vou[M/2+1][1][L/2]+vou[M/2+1][1][L/2+1]+vou[M/2][1][L/2+1])*0.125;
auxplotvel=sqrt(auxplotu*auxplotu+auxplotv*auxplotv);

Acomp->Series1->AddXY(t,auxplotvel,"",clRed);//Velocidade u
//Acomp->Series2->AddXY(t,auxplotv,"",clGreen);//Velocidade v
Acomp->Series3->AddXY(t,resm,"",clYellow);//Resíduo
plotam = plotam + incam;
}
// CRITERIO PARA INCREMENTO DE TIEMPO ++++++++++++++++++++++
t += dt;
auxt=(t+0.000000005)*1000;
auxuo=uo[(M/2)][2][1];

auxu=u[(M/2)][2][1];

}
} while (t-dt < tf);
saidaTemp(t-dt);
//fclose(fa);
// SALIDA DE PERFILES MEDIOS ++++++++++++++++++++++++++++++++++
tfin = clock();
saiMedRms();
saiPMedio(cont,iter,pasost,t-dt,Numi,Numo,Numit,Numot);
saiplanoZ(pasost);
saiplanoX(pasost);
}

  • 3 semanas depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...