@@ -251,7 +251,7 @@ void setMPData(MPMesh_ptr p_mpmesh,
251251
252252 auto mpData = p_MPs->getData <mpSlice>();
253253 auto mpAppID = p_MPs->getData <polyMPO::MPF_MP_APP_ID>();
254- Kokkos::View<double **> mpData_d (" mpData_d" ,vec3d_nEntries ,numMPs);
254+ Kokkos::View<double **> mpData_d (" mpData_d" ,nComps ,numMPs);
255255 Kokkos::deep_copy (mpData_d, mpDataIn_h);
256256
257257 auto setData = PS_LAMBDA (const int &, const int & mp, const int & mask){
@@ -274,8 +274,7 @@ std::map<polyMPO::MaterialPointSlice, setMPFunc> setMPMap = {
274274 {polyMPO::MPF_Vel, setMPData<polyMPO::MPF_Vel>},
275275 {polyMPO::MPF_Rot_Lat_Lon_Incr, setMPData<polyMPO::MPF_Rot_Lat_Lon_Incr>},
276276 {polyMPO::MPF_Strain_Rate, setMPData<polyMPO::MPF_Strain_Rate>},
277- {polyMPO::MPF_Stress, setMPData<polyMPO::MPF_Stress>},
278- {polyMPO::MPF_Stress_Div, setMPData<polyMPO::MPF_Stress_Div>}
277+ {polyMPO::MPF_Stress, setMPData<polyMPO::MPF_Stress>}
279278};
280279
281280void polympo_setMPData_f (MPMesh_ptr p_mpmesh,
@@ -325,24 +324,7 @@ void polympo_setMPRotLatLon_f(MPMesh_ptr p_mpmesh,
325324 const double * mpRotLatLonIn){
326325 static int callCount = 0 ;
327326 PMT_ALWAYS_ASSERT (callCount == 0 );
328- checkMPMeshValid (p_mpmesh);
329- auto p_MPs = ((polyMPO::MPMesh*)p_mpmesh)->p_MPs ;
330- PMT_ALWAYS_ASSERT (nComps == vec2d_nEntries);
331- PMT_ALWAYS_ASSERT (numMPs >= p_MPs->getCount ());
332- PMT_ALWAYS_ASSERT (numMPs >= p_MPs->getMaxAppID ());
333-
334- auto mpRotLatLon = p_MPs->getData <polyMPO::MPF_Cur_Pos_Rot_Lat_Lon>();
335- auto mpAppID = p_MPs->getData <polyMPO::MPF_MP_APP_ID>();
336- kkViewHostU<const double **> mpRotLatLonIn_h (mpRotLatLonIn,nComps,numMPs);
337- Kokkos::View<double **> mpRotLatLonIn_d (" mpRotLatLonDevice" ,vec2d_nEntries,numMPs);
338- Kokkos::deep_copy (mpRotLatLonIn_d, mpRotLatLonIn_h);
339- auto setPos = PS_LAMBDA (const int & elm, const int & mp, const int & mask){
340- if (mask){
341- mpRotLatLon (mp,0 ) = mpRotLatLonIn_d (0 , mpAppID (mp));
342- mpRotLatLon (mp,1 ) = mpRotLatLonIn_d (1 , mpAppID (mp));
343- }
344- };
345- p_MPs->parallel_for (setPos, " setMPRotLatLon" );
327+ setMPData<polyMPO::MPF_Cur_Pos_Rot_Lat_Lon>(p_mpmesh, nComps, numMPs, mpRotLatLonIn);
346328 callCount++;
347329}
348330
@@ -371,25 +353,7 @@ void polympo_getMPRotLatLon_f(MPMesh_ptr p_mpmesh,
371353}
372354
373355void polympo_setMPMass_f (MPMesh_ptr p_mpmesh, const int nComps, const int numMPs, const double * mpMassIn) {
374- Kokkos::Timer timer;
375- checkMPMeshValid (p_mpmesh);
376- auto p_MPs = ((polyMPO::MPMesh*)p_mpmesh)->p_MPs ;
377- PMT_ALWAYS_ASSERT (nComps == 1 ); // TODO mp_sclr_t
378- PMT_ALWAYS_ASSERT (numMPs >= p_MPs->getCount ());
379- PMT_ALWAYS_ASSERT (numMPs >= p_MPs->getMaxAppID ());
380-
381- auto mpMass = p_MPs->getData <polyMPO::MPF_Mass>();
382- auto mpAppID = p_MPs->getData <polyMPO::MPF_MP_APP_ID>();
383- kkViewHostU<const double **> mpMassIn_h (mpMassIn,nComps,numMPs);
384- Kokkos::View<double **> mpMassIn_d (" mpMassDevice" ,nComps,numMPs);
385- Kokkos::deep_copy (mpMassIn_d, mpMassIn_h);
386- auto setMPMass = PS_LAMBDA (const int & elm, const int & mp, const int & mask){
387- if (mask){
388- mpMass (mp,0 ) = mpMassIn_d (0 , mpAppID (mp));
389- }
390- };
391- p_MPs->parallel_for (setMPMass, " setMPMass" );
392- pumipic::RecordTime (" PolyMPO_setMPMass" , timer.seconds ());
356+ setMPData<polyMPO::MPF_Mass>(p_mpmesh, nComps, numMPs, mpMassIn);
393357}
394358
395359void polympo_getMPMass_f (MPMesh_ptr p_mpmesh, const int nComps, const int numMPs, double * mpMassHost) {
@@ -415,26 +379,7 @@ void polympo_getMPMass_f(MPMesh_ptr p_mpmesh, const int nComps, const int numMPs
415379}
416380
417381void polympo_setMPVel_f (MPMesh_ptr p_mpmesh, const int nComps, const int numMPs, const double * mpVelIn) {
418- Kokkos::Timer timer;
419- checkMPMeshValid (p_mpmesh);
420- auto p_MPs = ((polyMPO::MPMesh*)p_mpmesh)->p_MPs ;
421- PMT_ALWAYS_ASSERT (nComps == vec2d_nEntries);
422- PMT_ALWAYS_ASSERT (numMPs >= p_MPs->getCount ());
423- PMT_ALWAYS_ASSERT (numMPs >= p_MPs->getMaxAppID ());
424-
425- auto mpVel = p_MPs->getData <polyMPO::MPF_Vel>();
426- auto mpAppID = p_MPs->getData <polyMPO::MPF_MP_APP_ID>();
427- kkViewHostU<const double **> mpVelIn_h (mpVelIn,nComps,numMPs);
428- Kokkos::View<double **> mpVelIn_d (" mpVelDevice" ,vec2d_nEntries,numMPs);
429- Kokkos::deep_copy (mpVelIn_d, mpVelIn_h);
430- auto setMPVel = PS_LAMBDA (const int & elm, const int & mp, const int & mask){
431- if (mask){
432- mpVel (mp,0 ) = mpVelIn_d (0 , mpAppID (mp));
433- mpVel (mp,1 ) = mpVelIn_d (1 , mpAppID (mp));
434- }
435- };
436- p_MPs->parallel_for (setMPVel, " setMPVel" );
437- pumipic::RecordTime (" PolyMPO_setMPVel" , timer.seconds ());
382+ setMPData<polyMPO::MPF_Vel>(p_mpmesh, nComps, numMPs, mpVelIn);
438383}
439384
440385void polympo_getMPVel_f (MPMesh_ptr p_mpmesh, const int nComps, const int numMPs, double * mpVelHost) {
@@ -460,30 +405,8 @@ void polympo_getMPVel_f(MPMesh_ptr p_mpmesh, const int nComps, const int numMPs,
460405 pumipic::RecordTime (" PolyMPO_getMPVel" , timer.seconds ());
461406}
462407
463- // TODO: implement these
464408void polympo_setMPStrainRate_f (MPMesh_ptr p_mpmesh, const int nComps, const int numMPs, const double * mpStrainRateIn){
465- checkMPMeshValid (p_mpmesh);
466- auto p_MPs = ((polyMPO::MPMesh*)p_mpmesh)->p_MPs ;
467- PMT_ALWAYS_ASSERT (nComps == 6 ); // TODO: mp_sym_mat3d_t
468- PMT_ALWAYS_ASSERT (numMPs >= p_MPs->getCount ());
469- PMT_ALWAYS_ASSERT (numMPs >= p_MPs->getMaxAppID ());
470-
471- auto mpStrainRate = p_MPs->getData <polyMPO::MPF_Vel>();
472- auto mpAppID = p_MPs->getData <polyMPO::MPF_MP_APP_ID>();
473- kkViewHostU<const double **> mpStrainRateIn_h (mpStrainRateIn,nComps,numMPs);
474- Kokkos::View<double **> mpStrainRateIn_d (" mpStrainRateDevice" ,nComps,numMPs);
475- Kokkos::deep_copy (mpStrainRateIn_d, mpStrainRateIn_h);
476- auto setMPStrainRate = PS_LAMBDA (const int & elm, const int & mp, const int & mask){
477- if (mask){
478- mpStrainRate (mp,0 ) = mpStrainRateIn_d (0 , mpAppID (mp));
479- mpStrainRate (mp,1 ) = mpStrainRateIn_d (1 , mpAppID (mp));
480- mpStrainRate (mp,2 ) = mpStrainRateIn_d (2 , mpAppID (mp));
481- mpStrainRate (mp,3 ) = mpStrainRateIn_d (3 , mpAppID (mp));
482- mpStrainRate (mp,4 ) = mpStrainRateIn_d (4 , mpAppID (mp));
483- mpStrainRate (mp,5 ) = mpStrainRateIn_d (5 , mpAppID (mp));
484- }
485- };
486- p_MPs->parallel_for (setMPStrainRate, " setMPStrainRate" );
409+ setMPData<polyMPO::MPF_Strain_Rate>(p_mpmesh, nComps, numMPs, mpStrainRateIn);
487410}
488411void polympo_getMPStrainRate_f (MPMesh_ptr p_mpmesh, const int nComps, const int numMPs, double * mpStrainRateHost){
489412 checkMPMeshValid (p_mpmesh);
@@ -495,13 +418,7 @@ void polympo_getMPStrainRate_f(MPMesh_ptr p_mpmesh, const int nComps, const int
495418 (void )mpStrainRateHost;
496419}
497420void polympo_setMPStress_f (MPMesh_ptr p_mpmesh, const int nComps, const int numMPs, const double * mpStressIn){
498- checkMPMeshValid (p_mpmesh);
499- std::cerr << " Error: This routine is not implemented yet\n " ;
500- exit (1 );
501- (void )p_mpmesh;
502- (void )nComps;
503- (void )numMPs;
504- (void )mpStressIn;
421+ setMPData<polyMPO::MPF_Stress>(p_mpmesh, nComps, numMPs, mpStressIn);
505422}
506423void polympo_getMPStress_f (MPMesh_ptr p_mpmesh, const int nComps, const int numMPs, double * mpStressHost){
507424 checkMPMeshValid (p_mpmesh);
0 commit comments