LOCAData::LOCAData( const Teuchos::RCP<LOCA::GlobalData>& global_data, const Teuchos::RCP<LOCA::Parameter::SublistParser>& top_params, const Teuchos::RCP<NOX::Solver::Generic>& s, const Teuchos::RCP<LOCA::MultiContinuation::AbstractStrategy>& g, const Teuchos::RCP<Teuchos::ParameterList>& par, const Teuchos::RCP<NOX::StatusTest::Generic>& st, const Teuchos::RCP< std::list<ParamData> >& conParamData) : globalData(global_data), topParams(top_params), solver(s), grp(g), p(par), status(st), paramData(conParamData), space(NULL), np(g->getNumParams()), maxNonlinearIterations(1.0), aggressiveness(0.0), radius(-1.0), maxRadius(0.0), minRadius(0.0), solutionMax(0.0) { Teuchos::RCP<Teuchos::ParameterList> stepperList = topParams->getSublist("Stepper"); maxNonlinearIterations = static_cast<double>(stepperList->get("Max Nonlinear Iterations", 15)); aggressiveness = stepperList->get("Aggressiveness", 0.0); solutionMax = stepperList->get("Max Solution Component", 1.0e16); mfErrorHandler = MFCreateErrorHandler(); }
int main(int argc, char *argv[]) { MFImplicitMF M; int i; int n,k; MFNRegion Omega; MFAtlas S; MFNVector u0; FILE *fid; double R=.5; MFContinuationMethod H; MFErrorHandler e; e=MFCreateErrorHandler(); k=4; M=MFIMFCreateNSpaceWithRadius(k,.1,e); n=MFIMF_N(M,e); Omega=MFNRegionCreateHyperCube(n,R,e); printf("Interior of Four Cube, volume=%lf\n",2*R*2*R*2*R*2*R); u0=MFIMFVectorFactory(M,e); for(i=0;i<k;i++) MFNVSetC(u0,i, 0.,e); H=MFCreateMultifariosMethod(e); MFMultifarioSetRealParameter(H,"epsilon",.1,e); MFMultifarioSetIntegerParameter(H,"maxCharts",-1,e); MFMultifarioSetIntegerParameter(H,"verbose",1,e); MFMultifarioSetIntegerParameter(H,"page",1,e); MFMultifarioSetFilename(H,"FourSpace",e); S=MFComputeAtlas(H,M,Omega,u0,e); /*fid=fopen("FourSpace.atlas","w"); MFWriteAtlas(fid,S,e); fclose(fid); printf("Done writing Atlas\n");fflush(stdout);*/ MFFreeAtlas(S,e); MFFreeContinuationMethod(H,e); MFFreeImplicitMF(M,e); MFFreeNRegion(Omega,e); MFFreeNVector(u0,e); MFFreeErrorHandler(e); return 0; }
int main(int argc, char *argv[]) { MFImplicitMF M; int n; MFNRegion Omega; MFAtlas S; MFNVector u0; FILE *fid; MFContinuationMethod H; MFErrorHandler e; e=MFCreateErrorHandler(); M=MFIMFCreatePlane(e); n=MFIMF_N(M,e); Omega=MFNRegionCreateRectangle(-1.,-1.,1.,1.,e); u0=MFIMFVectorFactory(M,e); MFNVSetC(u0,0, 0.,e); MFNVSetC(u0,1, 0.,e); H=MFCreateMultifariosMethod(e); MFMultifarioSetRealParameter(H,"epsilon",.1,e); MFMultifarioSetIntegerParameter(H,"maxCharts",-1,e); MFMultifarioSetIntegerParameter(H,"verbose",1,e); MFMultifarioSetIntegerParameter(H,"page",1,e); MFMultifarioSetIntegerParameter(H,"dumpToPlotFile",1,e); MFMultifarioSetIntegerParameter(H,"dumpToCenterFile",0,e); MFMultifarioSetFilename(H,"Plane",e); S=MFComputeAtlas(H,M,Omega,u0,e); MFCloseAtlas(H,S,e); printf("Done computing Atlas\n");fflush(stdout); MFFreeAtlas(S,e); MFFreeImplicitMF(M,e); MFFreeNRegion(Omega,e); MFFreeNVector(u0,e); MFFreeContinuationMethod(H,e); MFFreeErrorHandler(e); return 0; }
int main(int argc, char *argv[]) { int gray; MFAtlas S; MFEnumPolytope P; FILE *fid; char name[1024]=""; MFErrorHandler e; if(argc<2){printf("Usage %s filename\n",argv[0]);fflush(stdout);return 8;} printf("%s %s\n",argv[0],argv[1]); strcpy(name,argv[1]); strcat(name,".atlas"); fid=fopen(name,"r"); if(fid==(FILE*)NULL) { printf("Error, could not open file %s, %s\n",name,strerror(errno)); fflush(stdout); return 12; } e=MFCreateErrorHandler(); printf("Reading Atlas %s\n",argv[1]);fflush(stdout); S=MFReadAtlas(fid,e); fclose(fid); printf("Done reading Atlas\n");fflush(stdout); printf("Dump Atlas as DX file\n");fflush(stdout); strcpy(name,argv[1]); /*strcat(name,".dx");*/ /*MFAtlasToDX(S,name,e);*/ MFAtlasToDX2(S,name,e); MFFreeAtlas(S,e); MFFreeErrorHandler(e); return(0); }
int main(int argc,char *argv[]) { MFAUTOTPBVP tpbvp; MFNSpace space; MFNRegion Omega; MFImplicitMF M; MFContinuationMethod H; MFNVector u0; MFNKMatrix Phi0; MFAtlas S; MFErrorHandler e; double epsilon=1.00; int through=10; doublereal rl0[1]={0.}; doublereal rl1[1]={20.}; doublereal a0=0.; doublereal a1=100.; doublereal ds=0.1; integer npar=3; integer nicp=1; integer icp[1]={0}; doublereal par[3]; doublereal thu[2]={1.,1.}; doublereal thl[3]={1.,1.,1.}; integer k=1; integer jac=1; integer ntst=5,ncol=4,ndim=2; integer nbc=1,nic=1; e=MFCreateErrorHandler(); tpbvp=MFCreateAUTOTPBVP(k,ndim,f,jac,nbc,a,nic,ic,npar,nicp,icp,ntst,ncol,plt,e); space=MFCreateAUTONSpace(tpbvp,thu,thl,e); M=MFCreateAUTOBV(tpbvp,space,e); MFAUTOBVSetRealParameter(M,"dlmin",0.0001,e); MFAUTOBVSetRealParameter(M,"dsmax",2.0,e); MFAUTOBVSetRealParameter(M,"ds0",0.1,e); MFAUTOBVSetRealParameter(M,"epsl",1.e-4,e); MFAUTOBVSetRealParameter(M,"epsu",1.e-4,e); MFAUTOBVSetIntegerParameter(M,"iid",0,e); /*MFAUTOAddUserZero(M,0,1.,e); MFAUTOAddUserZero(M,0,3.,e); MFAUTODetectLimitPoints(M,e);*/ Omega=MFNRegionCreateAUTO(space,k,icp,rl0,rl1,a0,a1,e); H=MFCreateMultifariosMethod(e); MFMultifarioSetRealParameter(H,"minR",0.0001,e); MFMultifarioSetRealParameter(H,"maxR",2.0,e); MFMultifarioSetRealParameter(H,"epsilon",epsilon,e); MFMultifarioSetIntegerParameter(H,"maxCharts",-1,e); MFMultifarioSetIntegerParameter(H,"verbose",1,e); MFMultifarioSetIntegerParameter(H,"page",1,e); MFMultifarioSetIntegerParameter(H,"branchSwitch",1,e); MFMultifarioSetIntegerParameter(H,"dumpToPlotFile",1,e); MFMultifarioSetIntegerParameter(H,"dumpToCenterFile",0,e); MFMultifarioSetFilename(H,"AUTINTMultifario",e); par[0]=0.; par[1]=0.; par[2]=0.; MFAUTOGetStartPoint(M,tpbvp,stpnt,par,&u0,&Phi0,e); S=MFComputeAtlasWithTangent(H,M,Omega,u0,Phi0,e); MFCloseAtlas(H,S,e); MFFreeNRegion(Omega,e); MFFreeNSpace(space,e); MFFreeNVector(u0,e); if(Phi0!=(MFNKMatrix)NULL)MFFreeNKMatrix(Phi0,e); MFFreeImplicitMF(M,e); MFFreeContinuationMethod(H,e); MFFreeAtlas(S,e); MFFreeErrorHandler(e); return 0; }
int main(int argc, char *argv[]) { MFImplicitMF M; int n; MFNRegion Omega; MFAtlas S; MFNVector u0,u; MFNKMatrix Phi; FILE *fid; MFContinuationMethod H; MFErrorHandler e; e=MFCreateErrorHandler(); M=MFIMFCreateAlgebraicExpression("[x,y,z]", "[((sqrt((x-.8)**2+y**2)-.8)**2+z**2 -.5**2)*((sqrt((x+.8)**2+y**2)-.8)**2+z**2 -.5**2)-.05]",e); n=MFIMF_N(M,e); Omega=MFNRegionCreateHyperCube(n,2.4,e); /* This bit starts with an approximate point on M, and calls project to get a point on M */ u=MFIMFVectorFactory(M,e); MFNVSetC(u,0, 1.2,e); MFNVSetC(u,1, 0.,e); MFNVSetC(u,2, 0.,e); u0=MFIMFVectorFactory(M,e); Phi=MFIMFMatrixFactory(M,e); MFNKMSetC(Phi,0,0,0.,e); MFNKMSetC(Phi,1,0,1.,e); MFNKMSetC(Phi,2,0,0.,e); MFNKMSetC(Phi,0,1,0.,e); MFNKMSetC(Phi,1,1,0.,e); MFNKMSetC(Phi,2,1,1.,e); if(!MFIMFProject(M,u,Phi,u0,e))return 8; H=MFCreateMultifariosMethod(e); MFMultifarioSetRealParameter(H,"epsilon",.01,e); MFMultifarioSetIntegerParameter(H,"maxCharts",-1,e); MFMultifarioSetIntegerParameter(H,"verbose",1,e); MFMultifarioSetIntegerParameter(H,"page",1,e); MFMultifarioSetIntegerParameter(H,"dumpToPlotFile",1,e); MFMultifarioSetIntegerParameter(H,"dumpToCenterFile",0,e); MFMultifarioSetFilename(H,"GenusTwo",e); S=MFComputeAtlas(H,M,Omega,u0,e); MFCloseAtlas(H,S,e); printf("Done computing Atlas\n");fflush(stdout); MFFreeAtlas(S,e); MFFreeImplicitMF(M,e); MFFreeContinuationMethod(H,e); MFFreeNRegion(Omega,e); MFFreeNVector(u0,e); MFFreeErrorHandler(e); return(0); }
int main(int argc, char *argv[]) { MFImplicitMF M; int i,n; MFNRegion Omega; MFAtlas S; MFNVector u0; FILE *fid; char *vars; char *expr; char *digits[]={"0","1","2","3","4","5","6","7","8","9"}; char name[80]=""; MFContinuationMethod H; MFErrorHandler e; e=MFCreateErrorHandler(); n=4; if(argc>1)sscanf(argv[1],"%d",&n); if(n<1||n>9) { fprintf(stderr,"%s currently only works for 0<n<10. You supplied n=%d\n",n); fflush(stderr); return 12; } vars=(char*)malloc((2+3*n)*sizeof(char)); strcpy(vars,"["); for(i=0;i<n;i++) { if(i>0)strcat(vars,","); strcat(vars,"v"); strcat(vars,digits[i]); } strcat(vars,"]"); expr=(char*)malloc((5+6*n)*sizeof(char)); strcpy(expr,"["); for(i=0;i<n;i++) { if(i>0)strcat(expr,"+"); strcat(expr,"v"); strcat(expr,digits[i]); strcat(expr,"**2"); } strcat(expr,"-1.]"); printf("Variables : %s\n",vars); fflush(stdout); printf("Expression: %s\n",expr); fflush(stdout); M=MFIMFCreateAlgebraicExpression(vars,expr,e); MFIMFSetR(M,sqrt(3.)/2.1,e); Omega=MFNRegionCreateHyperCube(n,3.,e); u0=MFIMFVectorFactory(M,e); MFNVSetC(u0,0, 1.,e); for(i=1;i<n;i++)MFNVSetC(u0,i, 0.,e); H=MFCreateMultifariosMethod(e); MFMultifarioSetRealParameter(H,"epsilon",1.,e); MFMultifarioSetIntegerParameter(H,"maxCharts",-1,e); MFMultifarioSetIntegerParameter(H,"verbose",1,e); MFMultifarioSetIntegerParameter(H,"page",0,e); MFMultifarioSetIntegerParameter(H,"dumpToPlotFile",1,e); MFMultifarioSetIntegerParameter(H,"dumpToCenterFile",0,e); strcpy(name,"SpherePacking"); strcat(name,digits[n]); MFMultifarioSetFilename(H,name,e); S=MFComputeAtlas(H,M,Omega,u0,e); MFCloseAtlas(H,S,e); printf("Done computing manifold\n");fflush(stdout); MFFreeAtlas(S,e); MFFreeImplicitMF(M,e); MFFreeNRegion(Omega,e); MFFreeNVector(u0,e); MFFreeContinuationMethod(H,e); free(vars); free(expr); MFFreeErrorHandler(e); return 0; }
int main(int argc, char *argv[]) { static char RoutineName[]={"main"}; FILE *fin; FILE *fout; char file[4096]; int n,k; MFModifiedPolytope P,Q; double on; double d; MFNVector nrm; MFErrorHandler e; int i; if(argc<2){printf("Usage %s infilename o n[0] n[1] n[2] ...\n",argv[0]);fflush(stdout);return 8;} strcpy(file,argv[1]); strcat(file,".plotfile"); fin=fopen(file,"r"); if(fin==(FILE*)NULL){printf("Error opening file %s\n",file);fflush(stdout);return 8;} strcpy(file,"sliced"); strcat(file,argv[1]); strcat(file,".plotfile"); fout=fopen(file,"w"); if(fout==(FILE*)NULL){printf("Error opening file %s\n",file);fflush(stdout);return 8;} fscanf(fin,"Dimension of vertices, %d\n",&n); fscanf(fin,"Dimension of manifold, %d\n",&k); sscanf(argv[1],"%lf",&on); printf(" origin=%lf\n",on);fflush(stdout); nrm=MFCreateNVector(n,e); for(i=0;i<n;i++) { d=atoi(argv[3+i]); printf(" nrm[%d]=%lf\n",i,d);fflush(stdout); MFNVSetC(nrm,i,d,e); } e=MFCreateErrorHandler(); fprintf(fout,"Dimension of vertices, %d\n",n); fprintf(fout,"Dimension of manifold, %d\n",k); i=0; while(!feof(fin)) { P=MFReadPolytopeFromPlotfile(fin,k,n,e); Q=MFCreateSectionOfPolytope(P,-1,nrm,on,e); MFFreeModifiedPolytope(P,e); MFWriteModifiedPolytopeToPlotFile(i,fout,Q,e); MFFreeModifiedPolytope(Q,e); i++; } fclose(fin); fclose(fout); MFFreeErrorHandler(e); return 0; }
int main(int argc, char *argv[]) { MFImplicitMF M; int n; MFNRegion Omega; MFAtlas S; MFNVector u0[2]; FILE *fid; MFContinuationMethod H; MFErrorHandler e; MFNVector ur,ll; e=MFCreateErrorHandler(); /*M=MFIMFCreateAlgebraicExpression("[x,y,z]","[(z-x)*(x+y+z)]",e);*/ M=MFIMFCreateAlgebraicExpression("[x,y,z]","[(z-x-.5*(y-1)*(y-1))*(x+y+z)]",e); n=MFIMF_N(M,e); ur=MFCreateNVector(n,e); MFNVSetC(ur,0,0.6,e); MFNVSetC(ur,1,0.6,e); MFNVSetC(ur,2,1.6,e); ll=MFCreateNVector(n,e); MFNVSetC(ll,0,-0.6,e); MFNVSetC(ll,1,-0.6,e); MFNVSetC(ll,2,-0.6,e); /*Omega=MFNRegionCreateHyperCubeByCorners(n,ll,ur,e);*/ Omega=MFNRegionCreateHyperCube(n,1.1,e); u0[0]=MFIMFVectorFactory(M,e); MFNVSetC(u0[0],0, 0.,e); MFNVSetC(u0[0],1, 1.,e); MFNVSetC(u0[0],2,-1.,e); u0[1]=MFIMFVectorFactory(M,e); MFNVSetC(u0[1],0, 1.,e); MFNVSetC(u0[1],1, 1.,e); MFNVSetC(u0[1],2, 1.,e); MFNVSetC(u0[0],0,0.0,e); MFNVSetC(u0[0],1, .1,e); MFNVSetC(u0[0],2,-.1,e); H=MFCreateMultifariosMethod(e); MFMultifarioSetRealParameter(H,"epsilon",.1,e); MFMultifarioSetIntegerParameter(H,"maxCharts",8000,e); MFMultifarioSetIntegerParameter(H,"verbose",1,e); MFMultifarioSetIntegerParameter(H,"page",1,e); MFMultifarioSetIntegerParameter(H,"pageEvery",100000,e); MFMultifarioSetRealParameter(H,"dotmin",.3,e); MFMultifarioSetIntegerParameter(H,"dumpToPlotFile",1,e); MFMultifarioSetIntegerParameter(H,"dumpToCenterFile",0,e); MFMultifarioSetIntegerParameter(H,"branchSwitch",2,e); MFMultifarioSetFilename(H,"Transcritical",e); S=MFComputeAtlasMultiple(H,M,Omega,1,u0,e); if(0){ int i; int j; int n; int m; int vMark; int prt; MFChart C; MFPolytope P; n=MFAtlasNumberOfCharts(S,e); printf("\n\n\nThere are %d charts\n",n);fflush(stdout); for(i=0;i<n;i++) { C=MFAtlasChart(S,i,e); P=MFChartPolytope(C,e); m=MFPolytopeNumberOfVertices(P,e); #if 0 { double x,y,z; double v0,v1; char sign0,sign1; MFNVector u; u=MFChartCenter(C,e); x=MFNV_C(u,0,e); y=MFNV_C(u,1,e); z=MFNV_C(u,2,e); v0=z-x-.5*(y-1)*(y-1); sign0='+';if(v0<0.)sign0='-';if(fabs(v0)<1.e-7)sign0='0'; v1=x+y+z; sign1='+';if(v1<1.)sign1='-';if(fabs(v1)<1.e-7)sign1='0'; printf(" chart %d, index1=%d, index2=%d, sign(v0)=%c, sign(v1)=%c\n",i,MFNVGetIndex(MFChartCenter(C,e),e),MFNVGetIndex2(MFChartCenter(C,e),e),sign0,sign1);fflush(stdout); } #endif if(MFNVGetIndex2(MFChartCenter(C,e),e)>-1) { prt=0; for(j=0;j<m;j++) { double x,y,z; double v0; int sign0; MFNVector u; MFKVector s; if(MFPolytopeRadiusOfVertex(P,j,e)/MFChartRadius(C,e)>1.&& MFPolytopeGetVertexMark(P,j,e)==0)prt=1; u=MFCreateNVector(MFAtlasN(S,e),e); s=MFCreateKVector(MFAtlasK(S,e),e); MFPolytopeVertex(P,j,s,e); MFChartEvaluate(C,s,u,e); x=MFNV_C(u,0,e); y=MFNV_C(u,1,e); z=MFNV_C(u,2,e); MFFreeNVector(u,e); MFFreeKVector(s,e); v0=z-x-.5*(y-1)*(y-1); sign0=1;if(v0<0.)sign0=-1;if(fabs(v0)<1.e-7)sign0=0; if(sign0==1)prt=1; } if(prt) { double x,y,z; double v0; int sign0; MFNVector u; MFKVector s; u=MFCreateNVector(MFAtlasN(S,e),e); s=MFCreateKVector(MFAtlasK(S,e),e); printf(" chart %d, index1=%d, index2=%d, polytope has %d vertices\n",i,MFNVGetIndex(MFChartCenter(C,e),e),MFNVGetIndex2(MFChartCenter(C,e),e),m);fflush(stdout); for(j=0;j<m;j++) { vMark=MFPolytopeGetVertexMark(P,j,e); MFPolytopeVertex(P,j,s,e); MFChartEvaluate(C,s,u,e); x=MFNV_C(u,0,e); y=MFNV_C(u,1,e); z=MFNV_C(u,2,e); v0=z-x-.5*(y-1)*(y-1); sign0=1;if(v0<0.)sign0=-1;if(fabs(v0)<1.e-7)sign0=0; printf(" vertex %d has mark %d, sign %2d, vertexRadius/chartRadius %lf (%lf,%lf,%lf)\n",j,vMark,sign0,MFPolytopeRadiusOfVertex(P,j,e)/MFChartRadius(C,e),x,y,z);fflush(stdout); } MFFreeNVector(u,e); MFFreeKVector(s,e); } } } } MFCloseAtlas(H,S,e); MFFreeAtlas(S,e); MFFreeImplicitMF(M,e); MFFreeNRegion(Omega,e); MFFreeNVector(u0[0],e); MFFreeNVector(u0[1],e); MFFreeContinuationMethod(H,e); MFFreeErrorHandler(e); return; }