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