@@ -175,6 +175,64 @@ void test_host_collocation_deriv1( const BasisSet<double>& basis, const std::str
175175
176176}
177177
178+ void test_host_collocation_deriv2 ( const BasisSet<double >& basis, const std::string& filename) {
179+
180+
181+
182+ std::vector<ref_collocation_data> ref_data;
183+ read_collocation_data (ref_data, filename);
184+
185+ for ( auto & d : ref_data ) {
186+
187+ const auto npts = d.pts .size ();
188+ const auto nbf = d.eval .size () / npts;
189+
190+ const auto & mask = d.mask ;
191+ const auto & pts = d.pts ;
192+
193+ std::vector<double > eval ( nbf * npts ),
194+ deval_x ( nbf * npts ),
195+ deval_y ( nbf * npts ),
196+ deval_z ( nbf * npts ),
197+ d2eval_xx ( nbf * npts ),
198+ d2eval_xy ( nbf * npts ),
199+ d2eval_xz ( nbf * npts ),
200+ d2eval_yy ( nbf * npts ),
201+ d2eval_yz ( nbf * npts ),
202+ d2eval_zz ( nbf * npts );
203+
204+
205+ gau2grid_collocation_hessian ( npts, mask.size (), nbf,
206+ pts.data ()->data (), basis, mask.data (), eval.data (),
207+ deval_x.data (), deval_y.data (), deval_z.data (),
208+ d2eval_xx.data (), d2eval_xy.data (), d2eval_xz.data (),
209+ d2eval_yy.data (), d2eval_yz.data (), d2eval_zz.data () );
210+
211+ for ( auto i = 0 ; i < npts * nbf; ++i )
212+ CHECK ( eval[i] == Approx ( d.eval [i] ) );
213+ for ( auto i = 0 ; i < npts * nbf; ++i )
214+ CHECK ( deval_x[i] == Approx ( d.deval_x [i] ) );
215+ for ( auto i = 0 ; i < npts * nbf; ++i )
216+ CHECK ( deval_y[i] == Approx ( d.deval_y [i] ) );
217+ for ( auto i = 0 ; i < npts * nbf; ++i )
218+ CHECK ( deval_z[i] == Approx ( d.deval_z [i] ) );
219+
220+ for ( auto i = 0 ; i < npts * nbf; ++i )
221+ CHECK ( d2eval_xx[i] == Approx ( d.d2eval_xx [i] ) );
222+ for ( auto i = 0 ; i < npts * nbf; ++i )
223+ CHECK ( d2eval_xy[i] == Approx ( d.d2eval_xy [i] ) );
224+ for ( auto i = 0 ; i < npts * nbf; ++i )
225+ CHECK ( d2eval_xz[i] == Approx ( d.d2eval_xz [i] ) );
226+ for ( auto i = 0 ; i < npts * nbf; ++i )
227+ CHECK ( d2eval_yy[i] == Approx ( d.d2eval_yy [i] ) );
228+ for ( auto i = 0 ; i < npts * nbf; ++i )
229+ CHECK ( d2eval_yz[i] == Approx ( d.d2eval_yz [i] ) );
230+ for ( auto i = 0 ; i < npts * nbf; ++i )
231+ CHECK ( d2eval_zz[i] == Approx ( d.d2eval_zz [i] ) );
232+ }
233+
234+ }
235+
178236void test_host_collocation_deriv3 ( const BasisSet<double >& basis, const std::string& filename) {
179237
180238 std::vector<ref_collocation_data> ref_data;
@@ -248,62 +306,4 @@ void test_host_collocation_deriv3( const BasisSet<double>& basis, const std::str
248306 CHECK ( d3eval_lapl_z[i] == Approx ( d.d3eval_lapl_z [i] ) );
249307 }
250308}
251-
252- void test_host_collocation_deriv2 ( const BasisSet<double >& basis, const std::string& filename) {
253-
254-
255-
256- std::vector<ref_collocation_data> ref_data;
257- read_collocation_data (ref_data, filename);
258-
259- for ( auto & d : ref_data ) {
260-
261- const auto npts = d.pts .size ();
262- const auto nbf = d.eval .size () / npts;
263-
264- const auto & mask = d.mask ;
265- const auto & pts = d.pts ;
266-
267- std::vector<double > eval ( nbf * npts ),
268- deval_x ( nbf * npts ),
269- deval_y ( nbf * npts ),
270- deval_z ( nbf * npts ),
271- d2eval_xx ( nbf * npts ),
272- d2eval_xy ( nbf * npts ),
273- d2eval_xz ( nbf * npts ),
274- d2eval_yy ( nbf * npts ),
275- d2eval_yz ( nbf * npts ),
276- d2eval_zz ( nbf * npts );
277-
278-
279- gau2grid_collocation_hessian ( npts, mask.size (), nbf,
280- pts.data ()->data (), basis, mask.data (), eval.data (),
281- deval_x.data (), deval_y.data (), deval_z.data (),
282- d2eval_xx.data (), d2eval_xy.data (), d2eval_xz.data (),
283- d2eval_yy.data (), d2eval_yz.data (), d2eval_zz.data () );
284-
285- for ( auto i = 0 ; i < npts * nbf; ++i )
286- CHECK ( eval[i] == Approx ( d.eval [i] ) );
287- for ( auto i = 0 ; i < npts * nbf; ++i )
288- CHECK ( deval_x[i] == Approx ( d.deval_x [i] ) );
289- for ( auto i = 0 ; i < npts * nbf; ++i )
290- CHECK ( deval_y[i] == Approx ( d.deval_y [i] ) );
291- for ( auto i = 0 ; i < npts * nbf; ++i )
292- CHECK ( deval_z[i] == Approx ( d.deval_z [i] ) );
293-
294- for ( auto i = 0 ; i < npts * nbf; ++i )
295- CHECK ( d2eval_xx[i] == Approx ( d.d2eval_xx [i] ) );
296- for ( auto i = 0 ; i < npts * nbf; ++i )
297- CHECK ( d2eval_xy[i] == Approx ( d.d2eval_xy [i] ) );
298- for ( auto i = 0 ; i < npts * nbf; ++i )
299- CHECK ( d2eval_xz[i] == Approx ( d.d2eval_xz [i] ) );
300- for ( auto i = 0 ; i < npts * nbf; ++i )
301- CHECK ( d2eval_yy[i] == Approx ( d.d2eval_yy [i] ) );
302- for ( auto i = 0 ; i < npts * nbf; ++i )
303- CHECK ( d2eval_yz[i] == Approx ( d.d2eval_yz [i] ) );
304- for ( auto i = 0 ; i < npts * nbf; ++i )
305- CHECK ( d2eval_zz[i] == Approx ( d.d2eval_zz [i] ) );
306- }
307-
308- }
309309#endif
0 commit comments