@@ -423,11 +423,11 @@ namespace rascal {
423
423
// xz, yx, zy exploiting the symmetry of the stress tensor
424
424
// thus yx=xy and zx=xz
425
425
// array accessed by voigt_idx and returns spatial_dim_idx
426
- const std::array<std::array<int , 2 >, ThreeD> voigt_id_to_spatial_dim = {
427
- { // voigt_idx, spatial_dim_idx
428
- {{4 , 2 }}, // xz, z
429
- {{5 , 0 }}, // xy, x
430
- {{3 , 1 }}}}; // yz, y
426
+ // const std::array<std::array<int, 2>, ThreeD> voigt_id_to_spatial_dim = {
427
+ // { // voigt_idx, spatial_dim_idx
428
+ // {{4, 2}}, // xz, z
429
+ // {{5, 0}}, // xy, x
430
+ // {{3, 1}}}}; // yz, y
431
431
432
432
internal::Hash<math::Vector_t, double > hasher{};
433
433
auto kernel_type_str = kernel.parameters .at (" name" ).get <std::string>();
@@ -439,7 +439,7 @@ namespace rascal {
439
439
std::string neg_stress_name =
440
440
std::string (" kernel: " ) + kernel_type_str + std::string (" ; " ) +
441
441
representation_grad_name +
442
- std::string (" negative stress; weight_hash:" ) + weight_hash;
442
+ std::string (" negative local stress; weight_hash:" ) + weight_hash;
443
443
444
444
for (const auto & manager : managers) {
445
445
if (kernel_type_str == " GAP" ) {
@@ -450,8 +450,10 @@ namespace rascal {
450
450
representation_grad_name, pair_grad_atom_i_r_j_name);
451
451
}
452
452
453
+ // auto && expansions_coefficients{*manager->template get_property<prop_t>(
454
+ // this->get_name(), true, true, ExcludeGhosts)};
453
455
auto && neg_stress{
454
- *manager->template get_property <Property<double , 0 , Manager_t, 6 >>(
456
+ *manager->template get_property <Property<double , 1 , Manager_t, 9 >>(
455
457
neg_stress_name, true , true , true )};
456
458
if (neg_stress.is_updated ()) {
457
459
continue ;
@@ -463,25 +465,37 @@ namespace rascal {
463
465
auto && pair_grad_atom_i_r_j{*manager->template get_property <
464
466
Property<double , 2 , Manager_t, 1 , ThreeD>>(pair_grad_atom_i_r_j_name,
465
467
true )};
468
+
469
+ auto manager_root = extract_underlying_manager<0 >(manager);
470
+ json structure_copy = manager_root->get_atomic_structure ();
471
+ auto atomic_structure =
472
+ structure_copy.template get <AtomicStructure<ThreeD>>();
473
+
474
+ size_t i_center{0 };
466
475
for (auto center : manager) {
476
+ auto && local_neg_stress = neg_stress[center];
467
477
Eigen::Vector3d r_i = center.get_position ();
468
478
// accumulate partial gradients onto gradients
469
479
for (auto neigh : center.pairs_with_self_pair ()) {
470
480
Eigen::Vector3d r_ji = r_i - neigh.get_position ();
471
481
for (int i_der{0 }; i_der < ThreeD; i_der++) {
472
- const auto & voigt = voigt_id_to_spatial_dim[i_der];
473
- neg_stress (i_der) +=
474
- r_ji (i_der) * pair_grad_atom_i_r_j[neigh](i_der);
475
- neg_stress (voigt[0 ]) +=
476
- r_ji (voigt[1 ]) * pair_grad_atom_i_r_j[neigh](i_der);
482
+ for (int k_der{0 }; k_der < ThreeD; k_der++) {
483
+ // HERE YOU CAN DEBUG
484
+ local_neg_stress (i_der*3 + k_der) +=
485
+ r_ji (i_der) * pair_grad_atom_i_r_j[neigh](k_der);
486
+
487
+ // ORIGINAL CODE only using one for-loop ofer i_der
488
+ // const auto & voigt = voigt_id_to_spatial_dim[i_der];
489
+ // neg_stress(i_der) +=
490
+ // r_ji(i_der) * pair_grad_atom_i_r_j[neigh](i_der);
491
+ // neg_stress(voigt[0]) +=
492
+ // r_ji(voigt[1]) * pair_grad_atom_i_r_j[neigh](i_der);
493
+ }
477
494
}
478
495
}
496
+ local_neg_stress[i_center] /= atomic_structure.get_volume ();
497
+ i_center++;
479
498
}
480
- auto manager_root = extract_underlying_manager<0 >(manager);
481
- json structure_copy = manager_root->get_atomic_structure ();
482
- auto atomic_structure =
483
- structure_copy.template get <AtomicStructure<ThreeD>>();
484
- neg_stress[0 ] /= atomic_structure.get_volume ();
485
499
neg_stress.set_updated_status (true );
486
500
} // manager
487
501
return neg_stress_name;
0 commit comments