47 lines
1.9 KiB
C
47 lines
1.9 KiB
C
//1st fractional step for diffusion term in eta-space
|
|
//Implicit method using Thomas algorithm for tri-diagonal matrix
|
|
|
|
scalarField a(etamax+1, 0), b(etamax+1, 0), c(etamax+1, 0);
|
|
|
|
for(label j=0 ; j <= etamax ; j++)
|
|
{
|
|
if(j == int(Neta[1]) || j == int(Neta[2]) || j == int(Neta[3]))
|
|
{
|
|
a[j] = -SDRCMC[j+k*(etamax+1)] * runTime.deltaT().value() /( (etaValue[j] - etaValue[j-1]) * (etaValue[j+1] - etaValue[j-1]) / 2 ) ;
|
|
b[j] = 1+2*SDRCMC[j+k*(etamax+1)] * runTime.deltaT().value() /( (etaValue[j+1] - etaValue[j]) * (etaValue[j] - etaValue[j-1]) ) ;
|
|
c[j] = -SDRCMC[j+k*(etamax+1)] * runTime.deltaT().value() /( (etaValue[j+1] - etaValue[j]) * (etaValue[j+1] - etaValue[j-1]) / 2 );
|
|
|
|
//Info<<j<<tab<<a[j]<<tab<<b[j]<<tab<<c[j]<<endl;
|
|
}
|
|
else
|
|
{
|
|
scalar Gam = SDRCMC[j+k*(etamax+1)] * runTime.deltaT().value() / (deta[j] * deta[j]) ;
|
|
a[j] = -Gam;
|
|
b[j] = (1+2*Gam);
|
|
c[j] = -Gam;
|
|
}
|
|
}
|
|
|
|
for(label i = 0 ; i<Ysize ; i++)
|
|
{
|
|
scalarField QiCMC_temp(etamax+1,0), QiCMC_temp2(etamax+1, 0);
|
|
|
|
for(label j=0 ; j<=etamax ; j++)
|
|
{
|
|
QiCMC_temp[j] = QiCMC[(k*(etamax+1)+j)*Ysize + i] ;
|
|
}
|
|
|
|
TDMA( a, b, c, QiCMC_temp, QiCMC_temp2, etamax+1);
|
|
|
|
for(label j=0 ; j <= etamax ; j++)
|
|
{
|
|
if( j != 0 || j != etamax)
|
|
{
|
|
QiCMCNew[(k*(etamax+1)+j)*Ysize + i] = QiCMC_temp2[j];
|
|
}
|
|
else
|
|
{
|
|
QiCMCNew[(k*(etamax+1)+j)*Ysize + i] = QiCMC_temp[j];
|
|
}
|
|
}
|
|
}
|