version 1.2, 2013/02/19 08:03:14 |
version 1.3, 2013/02/20 01:06:38 |
|
|
/* |
/* |
$OpenXM$ |
$OpenXM: OpenXM/src/hgm/mh/src/wmain.c,v 1.2 2013/02/19 08:03:14 takayama Exp $ |
License: LGPL |
License: LGPL |
*/ |
*/ |
#include <stdio.h> |
#include <stdio.h> |
|
|
#include <string.h> |
#include <string.h> |
#define SMAX 4096 |
#define SMAX 4096 |
#define inci(i) { i++; if (i >= argc) { fprintf(stderr,"Option argument is not given.\n"); return(-1); }} |
#define inci(i) { i++; if (i >= argc) { fprintf(stderr,"Option argument is not given.\n"); return(-1); }} |
|
int MH_deallocate=0; |
|
|
extern char *MH_Gfname; |
extern char *MH_Gfname; |
extern char *MH_Dfname; |
extern char *MH_Dfname; |
|
|
Line 43 int mh_gopen_file(void) { } |
|
Line 45 int mh_gopen_file(void) { } |
|
double mh_rkmain(double x0,double y0[],double xn) { } |
double mh_rkmain(double x0,double y0[],double xn) { } |
#endif |
#endif |
|
|
|
void mh_freeWorkArea(void) { |
|
extern int MH_deallocate; |
|
MH_deallocate=1; /* switch to deallocation mode. */ |
|
mh_main(0,NULL); |
|
setParam(NULL); |
|
mh_rkmain(0.0, NULL, 0.0); |
|
mh_rf(0.0, NULL, 0, NULL, 0); |
|
MH_deallocate=0; /* switch to the normal mode. */ |
|
} |
void *mh_malloc(int s) { |
void *mh_malloc(int s) { |
void *p; |
void *p; |
p = (void*)malloc(s); |
p = (void*)malloc(s); |
Line 63 static mypower(int x,int n) { |
|
Line 74 static mypower(int x,int n) { |
|
} |
} |
#ifdef STANDALONE |
#ifdef STANDALONE |
main(int argc,char *argv[]) { |
main(int argc,char *argv[]) { |
return mh_main(argc,char *argv[]); |
mh_main(argc,argv); |
|
mh_freeWorkArea(); |
|
return mh_main(argc,argv); |
} |
} |
#endif |
#endif |
mh_main(int argc,char *argv[]) { |
mh_main(int argc,char *argv[]) { |
double *y0; |
static double *y0; |
double x0,xn; |
double x0,xn; |
double ef; |
double ef; |
int i,rank; |
int i,rank; |
|
extern int MH_deallocate; |
|
if (MH_deallocate) { if (y0) mh_free(y0); return(0); } |
setParam(NULL); MH_Gfname = MH_Dfname = NULL; MH_Verbose=1; |
setParam(NULL); MH_Gfname = MH_Dfname = NULL; MH_Verbose=1; |
for (i=1; i<argc; i++) { |
for (i=1; i<argc; i++) { |
if (strcmp(argv[i],"--idata")==0) { |
if (strcmp(argv[i],"--idata")==0) { |
Line 204 static setParam(char *fname) { |
|
Line 219 static setParam(char *fname) { |
|
char s[SMAX]; |
char s[SMAX]; |
FILE *fp; |
FILE *fp; |
int i; |
int i; |
|
extern int MH_deallocate; |
|
if (MH_deallocate) { |
|
if (MH_Beta) mh_free(MH_Beta); |
|
if (MH_Ng) mh_free(MH_Ng); |
|
if (Iv) mh_free(Iv); |
|
return(0); |
|
} |
if (fname == NULL) return(setParamDefault()); |
if (fname == NULL) return(setParamDefault()); |
|
|
if ((fp=fopen(fname,"r")) == NULL) { |
if ((fp=fopen(fname,"r")) == NULL) { |
Line 269 mh_exit(int n) { |
|
Line 291 mh_exit(int n) { |
|
#ifdef STANDALONE |
#ifdef STANDALONE |
exit(n); |
exit(n); |
#else |
#else |
|
/* todo, use setjmp, longjmp */ |
fprintf(stderr,"Fatal error mh_exit(%d) in mh-w-n.\n",n); |
fprintf(stderr,"Fatal error mh_exit(%d) in mh-w-n.\n",n); |
#endif |
#endif |
} |
} |