2
0
mirror of https://github.com/LCPQ/DEHam synced 2024-07-30 09:04:19 +02:00

now S2 is working

This commit is contained in:
vijay gopal chilkuri 2016-12-21 17:41:39 +01:00
parent 4d6525ecf7
commit 9a7a10c37e

193
src/ex1.c
View File

@ -243,29 +243,39 @@ int main(int argc,char **argv)
ierr = VecGetValues(xr, nlocal, indxr, valxr);CHKERRQ(ierr); ierr = VecGetValues(xr, nlocal, indxr, valxr);CHKERRQ(ierr);
for (ii=Istart; ii<Iend; ii+=1) { for (ii=Istart; ii<Iend; ii+=1) {
// PetscPrintf(PETSC_COMM_WORLD," Element # = %d Value = %18f \n", i, valxr[i-Istart]); // PetscPrintf(PETSC_COMM_WORLD," Element # = %d Value = %18f \n", ii, valxr[ii-Istart]);
iii = ii+1; iii = ii+1;
xmat = 0.0; xmat = 0.0;
getdet_(&iii, ideter); getdet_(&iii, ideter);
// for(kk=0; kk<8; kk++){
// printf("%d ", ideter[kk]); /*
// } if(mpiid==1 && i==0){
for(kk=0; kk<=7; kk++){
// PetscPrintf(PETSC_COMM_WORLD," %d ", ideter[kk]);
printf(" %d ", ideter[kk]);
}
// PetscPrintf(PETSC_COMM_WORLD,"id= %d\n",mpiid);
printf("id= %d\n",mpiid);
}
*/
if(1){ if(1){
norm=norm+valxr[ii-Istart]*valxr[ii-Istart]; norm=norm+valxr[ii]*valxr[ii];
for(kko=0;kko<=7;kko++){ for(kko=0;kko<=3;kko++){
for(kok=kko;kok<=7;kok++){ for(kok=kko;kok<=3;kok++){
if(kok == kko && ideter[kok] != 3){ if(kok == kko && ideter[kok] != 3){
xmat=xmat+(3.0/4.0)*(valxr[ii-Istart]*valxr[ii-Istart]); xmat=xmat+(3.0/4.0)*(valxr[ii]*valxr[ii]);
// if(!i)PetscPrintf(PETSC_COMM_WORLD,"i = %d ii = %d iaa2 = %d xmat = %18f xymat = %18f\n", i, ii, iaa2, xmat, xymat);
} }
else{ else{
if(ideter[kko] == 1 && ideter[kok] == 1){ if(ideter[kko] == 1 && ideter[kok] == 1){
xmat=xmat+(1.0/2.0)*(valxr[ii-Istart]*valxr[ii-Istart]); xmat=xmat+(1.0/2.0)*(valxr[ii]*valxr[ii]);
} }
if(ideter[kko] == 2 && ideter[kok] == 2){ if(ideter[kko] == 2 && ideter[kok] == 2){
xmat=xmat+(1.0/2.0)*(valxr[ii-Istart]*valxr[ii-Istart]); xmat=xmat+(1.0/2.0)*(valxr[ii]*valxr[ii]);
} }
if(ideter[kko] == 1 && ideter[kok] == 2){ if(ideter[kko] == 1 && ideter[kok] == 2){
xmat=xmat-(1.0/2.0)*(valxr[ii-Istart]*valxr[ii-Istart]); xmat=xmat-(1.0/2.0)*(valxr[ii]*valxr[ii]);
for(kkio=0;kkio<=7;kkio++){ for(kkio=0;kkio<=7;kkio++){
ideter2[kkio]=ideter[kkio]; ideter2[kkio]=ideter[kkio];
} }
@ -273,10 +283,10 @@ int main(int argc,char **argv)
ideter2[kok]=1; ideter2[kok]=1;
adr_(ideter2, &iaa2); adr_(ideter2, &iaa2);
iaa2 = iaa2 - 1; iaa2 = iaa2 - 1;
xmat=xmat+valxr[ii-Istart]*valxr[iaa2]; xmat=xmat+valxr[ii]*valxr[iaa2];
} }
if(ideter[kko] == 2 && ideter[kok] == 1){ if(ideter[kko] == 2 && ideter[kok] == 1){
xmat=xmat-(1.0/2.0)*(valxr[ii-Istart]*valxr[ii-Istart]); xmat=xmat-(1.0/2.0)*(valxr[ii]*valxr[ii]);
for(kkio=0;kkio<=7;kkio++){ for(kkio=0;kkio<=7;kkio++){
ideter2[kkio]=ideter[kkio]; ideter2[kkio]=ideter[kkio];
} }
@ -284,87 +294,92 @@ int main(int argc,char **argv)
ideter2[kok]=2; ideter2[kok]=2;
adr_(ideter2, &iaa2); adr_(ideter2, &iaa2);
iaa2 = iaa2 - 1; iaa2 = iaa2 - 1;
xmat=xmat+valxr[ii-Istart]*valxr[iaa2]; xmat=xmat+valxr[ii]*valxr[iaa2];
} }
} }
} }
} }
// for(kko=4;kko<=7;kko++){ if(!i && mpiid == 1)printf("id = %d ii = %d xmat = %18f xymat = %18f valxr = %18f \n", mpiid, ii-Istart, xmat, xymat, valxr[ii-Istart]);
// for(kok=kko;kok<=7;kok++){ for(kko=4;kko<=7;kko++){
// if(kok == kko && ideter[kok] != 3){ for(kok=kko;kok<=7;kok++){
// xmat=xmat+(3.0/4.0)*(valxr[ii-Istart]*valxr[ii-Istart]); if(kok == kko && ideter[kok] != 3){
// } xmat=xmat+(3.0/4.0)*(valxr[ii]*valxr[ii]);
// else{ }
// if(ideter[kko] == 1 && ideter[kok] == 1){ else{
// xmat=xmat+(1.0/2.0)*(valxr[ii-Istart]*valxr[ii-Istart]); if(ideter[kko] == 1 && ideter[kok] == 1){
// } xmat=xmat+(1.0/2.0)*(valxr[ii]*valxr[ii]);
// if(ideter[kko] == 2 && ideter[kok] == 2){ }
// xmat=xmat+(1.0/2.0)*(valxr[ii-Istart]*valxr[ii-Istart]); if(ideter[kko] == 2 && ideter[kok] == 2){
// } xmat=xmat+(1.0/2.0)*(valxr[ii]*valxr[ii]);
// if(ideter[kko] == 1 && ideter[kok] == 2){ }
// xmat=xmat-(1.0/2.0)*(valxr[ii-Istart]*valxr[ii-Istart]); if(ideter[kko] == 1 && ideter[kok] == 2){
// for(kkio=0;kkio<=7;kkio++){ xmat=xmat-(1.0/2.0)*(valxr[ii]*valxr[ii]);
// ideter2[kkio]=ideter[kkio]; for(kkio=0;kkio<=7;kkio++){
// } ideter2[kkio]=ideter[kkio];
// ideter2[kko]=2; }
// ideter2[kok]=1; ideter2[kko]=2;
// adr_(ideter2, &iaa2); ideter2[kok]=1;
// iaa2 = iaa2 - 1; adr_(ideter2, &iaa2);
// xmat=xmat+valxr[ii-Istart]*valxr[iaa2]; iaa2 = iaa2 - 1;
// } xmat=xmat+valxr[ii]*valxr[iaa2];
// if(ideter[kko] == 2 && ideter[kok] == 1){ }
// xmat=xmat-(1.0/2.0)*(valxr[ii-Istart]*valxr[ii-Istart]); if(ideter[kko] == 2 && ideter[kok] == 1){
// for(kkio=0;kkio<=7;kkio++){ xmat=xmat-(1.0/2.0)*(valxr[ii]*valxr[ii]);
// ideter2[kkio]=ideter[kkio]; for(kkio=0;kkio<=7;kkio++){
// } ideter2[kkio]=ideter[kkio];
// ideter2[kko]=1; }
// ideter2[kok]=2; ideter2[kko]=1;
// adr_(ideter2, &iaa2); ideter2[kok]=2;
// iaa2 = iaa2 - 1; adr_(ideter2, &iaa2);
// xmat=xmat+valxr[ii-Istart]*valxr[iaa2]; iaa2 = iaa2 - 1;
// } xmat=xmat+valxr[ii]*valxr[iaa2];
// } }
// } }
// } }
// for(kko=0;kko<=3;kko++){ }
// for(kok=4;kok<=7;kok++){ if(!i && mpiid == 1)printf("id = %d ii = %d xmat = %18f xymat = %18f\n", mpiid, ii-Istart, xmat, xymat);
// if(kok == kko && ideter[kok] != 3){ for(kko=0;kko<=3;kko++){
// xmat=xmat+(3.0/4.0)*(valxr[ii-Istart]*valxr[ii-Istart]); for(kok=4;kok<=7;kok++){
// } if(kok == kko && ideter[kok] != 3){
// else{ xmat=xmat+(3.0/4.0)*(valxr[ii]*valxr[ii]);
// if(ideter[kko] == 1 && ideter[kok] == 1){ }
// xmat=xmat+(1.0/2.0)*(valxr[ii-Istart]*valxr[ii-Istart]); else{
// } if(ideter[kko] == 1 && ideter[kok] == 1){
// if(ideter[kko] == 2 && ideter[kok] == 2){ xmat=xmat+(1.0/2.0)*(valxr[ii]*valxr[ii]);
// xmat=xmat+(1.0/2.0)*(valxr[ii-Istart]*valxr[ii-Istart]); }
// } if(ideter[kko] == 2 && ideter[kok] == 2){
// if(ideter[kko] == 1 && ideter[kok] == 2){ xmat=xmat+(1.0/2.0)*(valxr[ii]*valxr[ii]);
// xmat=xmat-(1.0/2.0)*(valxr[ii-Istart]*valxr[ii-Istart]); }
// for(kkio=0;kkio<=7;kkio++){ if(ideter[kko] == 1 && ideter[kok] == 2){
// ideter2[kkio]=ideter[kkio]; xmat=xmat-(1.0/2.0)*(valxr[ii]*valxr[ii]);
// } for(kkio=0;kkio<=7;kkio++){
// ideter2[kko]=2; ideter2[kkio]=ideter[kkio];
// ideter2[kok]=1; }
// adr_(ideter2, &iaa2); ideter2[kko]=2;
// iaa2 = iaa2 - 1; ideter2[kok]=1;
// xmat=xmat+valxr[ii-Istart]*valxr[iaa2]; adr_(ideter2, &iaa2);
// } iaa2 = iaa2 - 1;
// if(ideter[kko] == 2 && ideter[kok] == 1){ if(!(i) && mpiid == 1)printf("iaa2 = %d\n",iaa2);
// xmat=xmat-(1.0/2.0)*(valxr[ii-Istart]*valxr[ii-Istart]); xmat=xmat+valxr[ii]*valxr[iaa2];
// for(kkio=0;kkio<=7;kkio++){ }
// ideter2[kkio]=ideter[kkio]; if(ideter[kko] == 2 && ideter[kok] == 1){
// } xmat=xmat-(1.0/2.0)*(valxr[ii]*valxr[ii]);
// ideter2[kko]=1; for(kkio=0;kkio<=7;kkio++){
// ideter2[kok]=2; ideter2[kkio]=ideter[kkio];
// adr_(ideter2, &iaa2); }
// iaa2 = iaa2 - 1; ideter2[kko]=1;
// xmat=xmat+valxr[ii-Istart]*valxr[iaa2]; ideter2[kok]=2;
// } adr_(ideter2, &iaa2);
// } iaa2 = iaa2 - 1;
// } if(!(i) && mpiid == 1)printf("2 iaa2 = %d\n",iaa2);
// } xmat=xmat+valxr[ii]*valxr[iaa2];
}
}
}
}
//--------------------------------------- //---------------------------------------
if(!i && mpiid == 1)printf("id = %d ii = %d xmat = %18f xymat = %18f\n", mpiid, ii-Istart, xmat, xymat);
xymat=xymat+xmat; xymat=xymat+xmat;
} }
} }
@ -374,7 +389,7 @@ int main(int argc,char **argv)
XS=(1.0/2.0)*(-1.0+sqrt(1.0+(4.0*xymatfin/normfin))); XS=(1.0/2.0)*(-1.0+sqrt(1.0+(4.0*xymatfin/normfin)));
} }
printf("\n mpiid = %d # root = %d norm = %18f xymat = %18f S^2 = %18f \n", mpiid, i, norm, xymat, XS); //printf("\n mpiid = %d # root = %d norm = %18f xymat = %18f S^2 = %18f \n", mpiid, i, norm, xymat, XS);
PetscPrintf(PETSC_COMM_WORLD,"\n norm = %18f xymat = %18f S^2 = %18f \n", normfin, xymatfin, XS); PetscPrintf(PETSC_COMM_WORLD,"\n norm = %18f xymat = %18f S^2 = %18f \n", normfin, xymatfin, XS);
xymatfin = 0.0; xymatfin = 0.0;
normfin = 0.0; normfin = 0.0;