MCPcopy Create free account
hub / github.com/OpenSees/OpenSees / cube

Method cube

SRC/element/PFEMElement/ParticleGroup.cpp:595–631  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

593}
594
595int
596ParticleGroup::cube(const VVDouble &pts, const VInt &num,
597 const VDouble &vel0, double p0) {
598 if (pts.size() != 8) {
599 opserr << "WARNING: pts.size() != 8 -- ParticleGroup::cube\n";
600 return -1;
601 }
602 if (num.size() != 3) {
603 opserr << "WARNING: num.size() != 3 -- ParticleGroup::cube\n";
604 return -1;
605 }
606
607 // line 15,26,37,48
608 VVDouble dirs(4), crds(4);
609 for (unsigned int i = 0; i < dirs.size(); ++i) {
610 dirs[i] = pts[i + 4];
611 dirs[i] -= pts[i];
612 dirs[i] /= num[2];
613 crds[i] = dirs[i];
614 crds[i] /= 2.0;
615 crds[i] += pts[i];
616 }
617
618 // create each plane of particles
619 for (int i = 0; i < num[2]; ++i) {
620 if (qua_d(crds[0], crds[1], crds[2], crds[3], num[0], num[1], vel0, p0) < 0) {
621 opserr << "WARNING: failed to create particles -- ParticleGroup::cube\n";
622 return -1;
623 }
624
625 for (unsigned int j = 0; j < crds.size(); ++j) {
626 crds[j] += dirs[j];
627 }
628 }
629
630 return 0;
631}

Callers 1

OPS_ParticleGroupFunction · 0.80

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected