1*59599516SKenneth E. Jansen #include <stdio.h>
2*59599516SKenneth E. Jansen #include <stdlib.h>
3*59599516SKenneth E. Jansen #include <FCMangle.h>
4*59599516SKenneth E. Jansen void
write_hessian(double * hessian,double * gradian,int * nshg)5*59599516SKenneth E. Jansen write_hessian( double* hessian, double* gradian, int* nshg ) {
6*59599516SKenneth E. Jansen
7*59599516SKenneth E. Jansen FILE* idmap = fopen( "lihessmap.dat","r");
8*59599516SKenneth E. Jansen int* map = ( int* )malloc( (*nshg)*sizeof( int ) );
9*59599516SKenneth E. Jansen int i,j,k;
10*59599516SKenneth E. Jansen int x;
11*59599516SKenneth E. Jansen
12*59599516SKenneth E. Jansen FILE* uhess = fopen( "uhessian.dat", "w" );
13*59599516SKenneth E. Jansen FILE* vhess = fopen( "vhessian.dat", "w" );
14*59599516SKenneth E. Jansen FILE* whess = fopen( "whessian.dat", "w" );
15*59599516SKenneth E. Jansen
16*59599516SKenneth E. Jansen
17*59599516SKenneth E. Jansen /* FILE* ugrad = fopen( "ugradian.dat", "w" ); */
18*59599516SKenneth E. Jansen /* FILE* vgrad = fopen( "vgradian.dat", "w" ); */
19*59599516SKenneth E. Jansen /* FILE* wgrad = fopen( "wgradian.dat", "w" ); */
20*59599516SKenneth E. Jansen
21*59599516SKenneth E. Jansen /* int ug[3] = { 1, 4, 7 }; */
22*59599516SKenneth E. Jansen /* int vg[3] = { 2, 5, 8 }; */
23*59599516SKenneth E. Jansen /* int wg[3] = { 3, 6, 9 }; */
24*59599516SKenneth E. Jansen int u[6] = { 1, 10, 19, 13, 22, 25 };
25*59599516SKenneth E. Jansen int v[6] = { 2, 11, 20, 14, 23, 26 };
26*59599516SKenneth E. Jansen int w[6] = { 3, 12, 21, 15, 24, 27 };
27*59599516SKenneth E. Jansen
28*59599516SKenneth E. Jansen for( x=0; x < *nshg; x++ ) fscanf(idmap,"%d\n", map+x );
29*59599516SKenneth E. Jansen fclose( idmap );
30*59599516SKenneth E. Jansen
31*59599516SKenneth E. Jansen fprintf( uhess,"%d\n", *nshg );
32*59599516SKenneth E. Jansen fprintf( vhess,"%d\n", *nshg );
33*59599516SKenneth E. Jansen fprintf( whess,"%d\n", *nshg );
34*59599516SKenneth E. Jansen /* fprintf( ugrad,"%d\n", *nshg ); */
35*59599516SKenneth E. Jansen /* fprintf( vgrad,"%d\n", *nshg ); */
36*59599516SKenneth E. Jansen /* fprintf( wgrad,"%d\n", *nshg ); */
37*59599516SKenneth E. Jansen
38*59599516SKenneth E. Jansen for( i=0; i< *nshg; i++ ) {
39*59599516SKenneth E. Jansen
40*59599516SKenneth E. Jansen k = map[ i ]-1;
41*59599516SKenneth E. Jansen
42*59599516SKenneth E. Jansen /* for( j=0; j<3; j++ ) { */
43*59599516SKenneth E. Jansen /* fprintf( ugrad, "%f ", gradian[i+(ug[j]-1)*(*nshg)] ); */
44*59599516SKenneth E. Jansen /* fprintf( vgrad, "%f ", gradian[i+(vg[j]-1)*(*nshg)] ); */
45*59599516SKenneth E. Jansen /* fprintf( wgrad, "%f ", gradian[i+(wg[j]-1)*(*nshg)] ); */
46*59599516SKenneth E. Jansen /* } */
47*59599516SKenneth E. Jansen
48*59599516SKenneth E. Jansen for( j=0; j<6; j++ ) {
49*59599516SKenneth E. Jansen fprintf( uhess, "%f ", hessian[k+(u[j]-1)*(*nshg)] );
50*59599516SKenneth E. Jansen fprintf( vhess, "%f ", hessian[k+(v[j]-1)*(*nshg)] );
51*59599516SKenneth E. Jansen fprintf( whess, "%f ", hessian[k+(w[j]-1)*(*nshg)] );
52*59599516SKenneth E. Jansen }
53*59599516SKenneth E. Jansen fprintf( uhess, "\n" ) ;
54*59599516SKenneth E. Jansen fprintf( vhess, "\n" ) ;
55*59599516SKenneth E. Jansen fprintf( whess, "\n" ) ;
56*59599516SKenneth E. Jansen /* fprintf( ugrad, "\n" ) ; */
57*59599516SKenneth E. Jansen /* fprintf( vgrad, "\n" ) ; */
58*59599516SKenneth E. Jansen /* fprintf( wgrad, "\n" ) ; */
59*59599516SKenneth E. Jansen }
60*59599516SKenneth E. Jansen
61*59599516SKenneth E. Jansen free( map );
62*59599516SKenneth E. Jansen fclose( uhess );
63*59599516SKenneth E. Jansen fclose( vhess );
64*59599516SKenneth E. Jansen fclose( whess );
65*59599516SKenneth E. Jansen /* fclose( ugrad ); */
66*59599516SKenneth E. Jansen /* fclose( vgrad ); */
67*59599516SKenneth E. Jansen /* fclose( wgrad ); */
68*59599516SKenneth E. Jansen }
69