@@ -32,6 +32,9 @@ int main(int argc, char **argv)
3232 lotka_volterra_ess (LOTKA_VOLTERRA_CONF_FILE_MISQP );
3333 printf ("\tTest 4 passed MISQP\n" );
3434
35+ alpha_pinene_ess (LOTKA_VOLTERRA_CONF_FILE_NL2SOL_DN2GB );
36+ printf ("\tTest 5 passed NL2SOL_DN2GB\n" );
37+
3538 return 0 ;
3639}
3740
@@ -82,3 +85,61 @@ void lotka_volterra_ess(char *conf_file)
8285
8386 destroy_cuqdyn_conf ();
8487}
88+
89+ void alpha_pinene_ess (char * conf_file )
90+ {
91+ init_cuqdyn_conf_from_file ("data/alpha_pinene_cuqdyn_config.xml" );
92+
93+ realtype expected_values [5 ] = {5.93e-5 , 2.96e-5 , 2.05e-5 , 2.75e-5 , 4.00e-5 };
94+
95+ N_Vector texp = N_VNew_Serial (9 , get_sun_context ());
96+ NV_Ith_S (texp , 0 ) = 0 ;
97+ NV_Ith_S (texp , 1 ) = 1230 ;
98+ NV_Ith_S (texp , 2 ) = 3060 ;
99+ NV_Ith_S (texp , 3 ) = 4920 ;
100+ NV_Ith_S (texp , 4 ) = 7800 ;
101+ NV_Ith_S (texp , 5 ) = 10680 ;
102+ NV_Ith_S (texp , 6 ) = 15030 ;
103+ NV_Ith_S (texp , 7 ) = 22620 ;
104+ NV_Ith_S (texp , 8 ) = 36420 ;
105+
106+ DlsMat yexp = SUNDenseMatrix (9 , 5 , get_sun_context ());
107+
108+ realtype yexp_data [9 ][5 ] = {{1.409e-01 , 3.034e-02 , 1.409e-01 , 3.034e-02 , 3.252e-02 },
109+ {3.441e+00 , 6.992e-02 , 3.441e+00 , 6.992e-02 , 4.046e-01 },
110+ {5.622e+00 , 1.027e-01 , 5.622e+00 , 1.027e-01 , 3.011e+00 },
111+ {5.316e+00 , 5.430e-01 , 5.316e+00 , 5.430e-01 , 4.136e+00 },
112+ {6.977e+00 , 5.887e-01 , 6.977e+00 , 5.887e-01 , 9.308e+00 },
113+ {7.298e+00 , 9.356e-01 , 7.298e+00 , 9.356e-01 , 1.277e+01 },
114+ {5.795e+00 , 1.468e+00 , 5.795e+00 , 1.468e+00 , 1.797e+01 },
115+ {5.169e+00 , 1.443e+00 , 5.169e+00 , 1.443e+00 , 2.250e+01 },
116+ {4.175e+00 , 4.301e+00 , 4.175e+00 , 4.301e+00 , 2.232e+01 }};
117+
118+ N_Vector initial_values = N_VNew_Serial (5 , get_sun_context ());
119+ NV_Ith_S (initial_values , 0 ) = 100 ;
120+ NV_Ith_S (initial_values , 1 ) = 0.0001 ;
121+ NV_Ith_S (initial_values , 2 ) = 0.0001 ;
122+ NV_Ith_S (initial_values , 3 ) = 0.0001 ;
123+ NV_Ith_S (initial_values , 4 ) = 0.0001 ;
124+
125+ for (int i = 0 ; i < 9 ; ++ i )
126+ {
127+ for (int j = 0 ; j < 5 ; ++ j )
128+ {
129+ SM_ELEMENT_D (yexp , i , j ) = yexp_data [i ][j ];
130+ }
131+ }
132+
133+ N_Vector xbest = execute_ess_solver (conf_file , OUPUT_PATH , texp , yexp , initial_values , 0 , 1 );
134+
135+ for (int i = 0 ; i < 4 ; ++ i )
136+ {
137+ realtype expected = expected_values [i ];
138+ realtype result = NV_Ith_S (xbest , i );
139+
140+ realtype a = 6 ;
141+ // assert(fabs(result - expected) < 0.1);
142+ }
143+
144+ destroy_cuqdyn_conf ();
145+ }
0 commit comments