Do not sort exponents, and fix norm of flow

This commit is contained in:
Ian Jauslin 2025-02-03 12:08:07 -05:00
parent 21e8dcdb8a
commit 50c09cf164

View File

@ -125,12 +125,12 @@ int lyapunov(
// size of flow (for reset) // size of flow (for reset)
for(i=0;i<MATSIZE;i++){ for(i=0;i<MATSIZE;i++){
for(j=0;j<MATSIZE;j++){ for(j=0;j<MATSIZE;j++){
norm+=fabs(flow[i*MATSIZE+j]); norm+=flow[i*MATSIZE+j]*flow[i*MATSIZE+j]/MATSIZE;
if(norm>lyapunov_reset){ if(sqrt(norm)>lyapunov_reset){
break; break;
} }
} }
if(norm>lyapunov_reset){ if(sqrt(norm)>lyapunov_reset){
break; break;
} }
} }
@ -148,8 +148,8 @@ int lyapunov(
lyapunov[i]=log(fabs(flow[i*MATSIZE+i]))/(time-prevtime); lyapunov[i]=log(fabs(flow[i*MATSIZE+i]))/(time-prevtime);
} }
// sort lyapunov exponents //// sort lyapunov exponents
qsort(lyapunov, MATSIZE, sizeof(double), compare_double); //qsort(lyapunov, MATSIZE, sizeof(double), compare_double);
// average lyapunov // average lyapunov
for(i=0; i<MATSIZE; i++){ for(i=0; i<MATSIZE; i++){
@ -164,11 +164,11 @@ int lyapunov(
printf("% .15e % .15e % .15e\n",time, lyapunov[i], lyapunov_avg[i]); printf("% .15e % .15e % .15e\n",time, lyapunov[i], lyapunov_avg[i]);
} }
printf("\n"); printf("\n");
fprintf(stderr,"% .15e",time); fprintf(stderr,"% .15e\n",time);
// print largest and smallest lyapunov exponent to stderr //// print largest and smallest lyapunov exponent to stderr
if(MATSIZE>0){ //if(MATSIZE>0){
fprintf(stderr," % .15e % .15e\n", lyapunov[0], lyapunov[MATSIZE-1]); // fprintf(stderr," % .15e % .15e\n", lyapunov[0], lyapunov[MATSIZE-1]);
} //}
// set flow to Q: // set flow to Q:
LAPACKE_dorgqr(LAPACK_COL_MAJOR, MATSIZE, MATSIZE, MATSIZE, flow, MATSIZE, tmp11); LAPACKE_dorgqr(LAPACK_COL_MAJOR, MATSIZE, MATSIZE, MATSIZE, flow, MATSIZE, tmp11);