368 Vector3D<cosmoType> _vPred;
372 Vector3D<cosmoType> velocity;
373 Vector3D<cosmoType> treeAcceleration;
377 Vector3D<cosmoType> w;
380 inline Vector3D<cosmoType>& vPred() {
return _vPred;}
392 int iNSIDMInteractions;
425 void pup(PUP::er &p) {
426 ExternalGravityParticle::pup(p);
429 p | treeAcceleration;
444 p | iNSIDMInteractions;
458#define GP_DEBUG_EXTRAS
460#ifdef GP_DEBUG_EXTRAS
463#define IMAGAS CkAssert(isGas())
466#define IMASTAR CkAssert(isStar())
477 inline int64_t& iSplitOrder() {
IMAGAS;
return (((extraSPHData*)extraData)->iSplitOrder());}
479 inline double& fMetals() {
IMAGAS;
return (((extraSPHData*)extraData)->fMetals());}
480 inline double& fMFracOxygen() {
IMAGAS;
return (((extraSPHData*)extraData)->fMFracOxygen());}
481 inline double& fMFracIron() {
IMAGAS;
return (((extraSPHData*)extraData)->fMFracIron());}
482 inline double& fESNrate() {
IMAGAS;
return (((extraSPHData*)extraData)->fESNrate());}
483 inline double& fTimeCoolIsOffUntil() {
IMAGAS;
return (((extraSPHData*)extraData)->fTimeCoolIsOffUntil());}
485 inline Vector3D<cosmoType>& vPred() {
IMAGAS;
return (((extraSPHData*)extraData)->vPred());}
487 inline double& uPred() {
IMAGAS;
return (((extraSPHData*)extraData)->uPred());}
488 inline double& divv() {
IMAGAS;
return (((extraSPHData*)extraData)->divv());}
489 inline Vector3D<double>& curlv() {
IMAGAS;
return (((extraSPHData*)extraData)->curlv());}
490 inline double& mumax() {
IMAGAS;
return (((extraSPHData*)extraData)->mumax());}
491 inline double& PdV() {
IMAGAS;
return (((extraSPHData*)extraData)->PdV());}
492 inline double& uDotPdV() {
IMAGAS;
return (((extraSPHData*)extraData)->uDotPdV());}
493 inline double& uDotAV() {
IMAGAS;
return (((extraSPHData*)extraData)->uDotAV());}
494 inline double& uDotDiff() {
IMAGAS;
return (((extraSPHData*)extraData)->uDotDiff());}
495 inline double& c() {
IMAGAS;
return (((extraSPHData*)extraData)->c());}
496 inline double& PoverRho2() {
IMAGAS;
return (((extraSPHData*)extraData)->PoverRho2());}
497 inline double& BalsaraSwitch() {
IMAGAS;
return (((extraSPHData*)extraData)->BalsaraSwitch());}
498 inline double& fBallMax() {
IMAGAS;
return (((extraSPHData*)extraData)->fBallMax());}
500 inline double CullenAlpha()
const {
IMAGAS;
return (((extraSPHData*)extraData)->CullenAlpha());}
501 inline double& CullenAlpha() {
IMAGAS;
return (((extraSPHData*)extraData)->CullenAlpha());}
502 inline double& TimeDivV() {
IMAGAS;
return (((extraSPHData*)extraData)->TimeDivV());}
503 inline double& dvds() {
IMAGAS;
return (((extraSPHData*)extraData)->dvds());}
504 inline double& dvdsOnSFull() {
IMAGAS;
return (((extraSPHData*)extraData)->dvdsOnSFull());}
505 inline double& dvds_old() {
IMAGAS;
return (((extraSPHData*)extraData)->dvds_old());}
508 inline double& dtNew() {
IMAGAS;
return (((extraSPHData*)extraData)->dtNew());}
510 inline double& dTimeFB() {
IMAGAS;
return (((extraSPHData*)extraData)->dTimeFB());}
512 inline double& uDot() {
IMAGAS;
return (((extraSPHData*)extraData)->uDot());}
513 inline COOLPARTICLE& CoolParticle() {
IMAGAS;
return (((extraSPHData*)extraData)->CoolParticle());}
516 inline double& diff() {
IMAGAS;
return (((extraSPHData*)extraData)->diff());}
517 inline double& fMetalsDot() {
IMAGAS;
return (((extraSPHData*)extraData)->fMetalsDot());}
518 inline double& fMetalsPred() {
IMAGAS;
return (((extraSPHData*)extraData)->fMetalsPred());}
519 inline double& fMFracOxygenDot() {
IMAGAS;
return (((extraSPHData*)extraData)->fMFracOxygenDot());}
520 inline double& fMFracIronDot() {
IMAGAS;
return (((extraSPHData*)extraData)->fMFracIronDot());}
521 inline double& fMFracOxygenPred() {
IMAGAS;
return (((extraSPHData*)extraData)->fMFracOxygenPred());}
522 inline double& fMFracIronPred() {
IMAGAS;
return (((extraSPHData*)extraData)->fMFracIronPred());}
525 inline COOLPARTICLE& CoolParticleHot() {
IMAGAS;
return (((extraSPHData*)extraData)->CoolParticleHot());}
526 inline int& cpHotInit() {
IMAGAS;
return (((extraSPHData*)extraData)->cpHotInit());}
527 inline double& uHot() {
IMAGAS;
return (((extraSPHData*)extraData)->uHot());}
528 inline double& uHotPred() {
IMAGAS;
return (((extraSPHData*)extraData)->uHotPred());}
529 inline double& uHotDot() {
IMAGAS;
return (((extraSPHData*)extraData)->uHotDot());}
530 inline double& massHot() {
IMAGAS;
return (((extraSPHData*)extraData)->massHot());}
531 inline double& fDensityU() {
IMAGAS;
return (((extraSPHData*)extraData)->fDensityU());}
532 inline double& fThermalCond() {
IMAGAS;
return (((extraSPHData*)extraData)->fThermalCond());}
533 inline double& fPromoteSum() {
IMAGAS;
return (((extraSPHData*)extraData)->fPromoteSum());}
534 inline double& fPromoteSumuPred() {
IMAGAS;
return (((extraSPHData*)extraData)->fPromoteSumuPred());}
535 inline double& fPromoteuPredInit() {
IMAGAS;
return (((extraSPHData*)extraData)->fPromoteuPredInit());}
540 inline double& fStarMetals() {
IMASTAR;
return (((extraStarData*)extraData)->fMetals());}
541 inline double& fStarMFracOxygen() {
IMASTAR;
return (((extraStarData*)extraData)->fMFracOxygen());}
542 inline double& fStarMFracIron() {
IMASTAR;
return (((extraStarData*)extraData)->fMFracIron());}
543 inline double& fTimeForm() {
IMASTAR;
return (((extraStarData*)extraData)->fTimeForm());}
544 inline double& fMassForm() {
IMASTAR;
return (((extraStarData*)extraData)->fMassForm());}
545 inline double& fStarESNrate() {
IMASTAR;
return (((extraStarData*)extraData)->fESNrate());}
546 inline double& fNSN() {
IMASTAR;
return (((extraStarData*)extraData)->fNSN());}
547 inline double& fMSN() {
IMASTAR;
return (((extraStarData*)extraData)->fMSN());}
548 inline double& fMIronOut() {
IMASTAR;
return (((extraStarData*)extraData)->fMIronOut());}
549 inline double& fMOxygenOut() {
IMASTAR;
return (((extraStarData*)extraData)->fMOxygenOut());}
550 inline double& fSNMetals() {
IMASTAR;
return (((extraStarData*)extraData)->fSNMetals());}
551 inline int64_t& iGasOrder() {
IMASTAR;
return (((extraStarData*)extraData)->iGasOrder());}
555 inline double& rgfHMStars(
int i) {
IMASTAR;
return (((extraStarData*)extraData)->rgfHMStars(i));}
556 inline double* rgfHMStars() {
IMASTAR;
return (((extraStarData*)extraData)->rgfHMStars());}
557 inline double& fLowNorm() {
IMASTAR;
return (((extraStarData*)extraData)->fLowNorm());}
559 inline int64_t& iEaterOrder() {
IMASTAR;
return (((extraStarData*)extraData)->iEaterOrder());}
560 inline double& dDeltaM() {
IMASTAR;
return (((extraStarData*)extraData)->dDeltaM());}
561 inline double& dMDot() {
IMASTAR;
return (((extraStarData*)extraData)->dMDot());}
562#ifdef COOLING_MOLECULARH
563 inline double dStarLymanWerner()
const {
IMASTAR;
return (((extraStarData*)extraData)->dStarLymanWerner());}
564 inline double& dStarLymanWerner() {
IMASTAR;
return (((extraStarData*)extraData)->dStarLymanWerner());}
566 inline double& fShieldForm() {
IMASTAR;
return (((extraStarData*)extraData)->fShieldForm());}
576#define TYPE_GAS (1<<0)
577#define TYPE_DARK (1<<1)
578#define TYPE_STAR (1<<2)
580#define TYPE_DELETED (1<<3)
582#define TYPE_PHOTOGENIC (1<<4)
583#define TYPE_NbrOfACTIVE (1<<5)
584#define TYPE_SMOOTHACTIVE (1<<6)
586#define TYPE_SINK (1<<7)
587#define TYPE_SINKING (1<<8)
588#define TYPE_NEWSINKING (1<<9)
589#define TYPE_PROMOTED (1<<10)
590#define TYPE_FEEDBACK (1<<11)
591#define TYPE_MAXTYPE (1<<12)
593 inline bool isDark()
const {
return TYPETest(
this, TYPE_DARK);}
594 inline bool isGas()
const {
return TYPETest(
this, TYPE_GAS);}
595 inline bool isStar()
const {
return TYPETest(
this, TYPE_STAR);}
597 GravityParticle &operator=(
const ExternalGravityParticle &p){
600 position = p.position;
649class ExternalSmoothParticle {
655 Vector3D<cosmoType> position;
656 Vector3D<double> velocity;
669 Vector3D<cosmoType> vPred;
670 Vector3D<cosmoType> treeAcceleration;
678 double BalsaraSwitch;
693 double fTimeCoolIsOffUntil;
694 Vector3D<double> curlv;
698 double fMFracOxygenDot;
699 double fMFracIronDot;
702 COOLPARTICLE CoolParticle;
710 double fPromoteSumuPred;
711 double fPromoteuPredInit;
718 ExternalSmoothParticle() {}
724 fDensity = p->fDensity;
725 position = p->position;
726 velocity = p->velocity;
730 treeAcceleration = p->treeAcceleration;
734 iOrderCol = p->iOrderCol;
740 uDotPdV = p->uDotPdV();
741 uDotAV = p->uDotAV();
742 uDotDiff = p->uDotDiff();
744 PoverRho2 = p->PoverRho2();
745 BalsaraSwitch = p->BalsaraSwitch();
746 fBallMax = p->fBallMax();
748 CullenAlpha = p->CullenAlpha();
749 TimeDivV = p->TimeDivV();
751 dvds_old = p->dvds_old();
759 fMetals = p->fMetals();
760 fESNrate = p->fESNrate();
761 fMFracOxygen = p->fMFracOxygen();
762 fMFracIron = p->fMFracIron();
763 fTimeCoolIsOffUntil = p->fTimeCoolIsOffUntil();
766 fMetalsDot = p->fMetalsDot();
767 fMFracOxygenDot = p->fMFracOxygenDot();
768 fMFracIronDot = p->fMFracIronDot();
771 CoolParticle = p->CoolParticle();
773 uHotPred = p->uHotPred();
774 uHotDot = p->uHotDot();
775 massHot = p->massHot();
776 fDensityU = p->fDensityU();
777 fThermalCond = p->fThermalCond();
778 fPromoteSum = p->fPromoteSum();
779 fPromoteSumuPred = p->fPromoteSumuPred();
780 fPromoteuPredInit = p->fPromoteuPredInit();
786 dTimeFB = p->dTimeFB();
790 iEaterOrder = p->iEaterOrder();
798 tmp->fDensity = fDensity;
799 tmp->position = position;
800 tmp->velocity = velocity;
804 tmp->treeAcceleration = treeAcceleration;
808 tmp->iOrderCol = iOrderCol;
811 tmp->vPred() = vPred;
812 tmp->mumax() = mumax;
814 tmp->uDotPdV() = uDotPdV;
815 tmp->uDotAV() = uDotAV;
816 tmp->uDotDiff() = uDotDiff;
818 tmp->PoverRho2() = PoverRho2;
819 tmp->BalsaraSwitch() = BalsaraSwitch;
820 tmp->fBallMax() = fBallMax;
822 tmp->CullenAlpha() = CullenAlpha;
823 tmp->TimeDivV() = TimeDivV;
825 tmp->dvds_old() = dvds_old;
827 tmp->curlv() = curlv;
832 tmp->uPred() = uPred;
833 tmp->fMetals() = fMetals;
834 tmp->fESNrate() = fESNrate;
835 tmp->fMFracOxygen() = fMFracOxygen;
836 tmp->fMFracIron() = fMFracIron;
837 tmp->fTimeCoolIsOffUntil() = fTimeCoolIsOffUntil;
840 tmp->fMetalsDot() = fMetalsDot;
841 tmp->fMFracOxygenDot() = fMFracOxygenDot;
842 tmp->fMFracIronDot() = fMFracIronDot;
845 tmp->CoolParticle() = CoolParticle;
847 tmp->uHotPred() = uHotPred;
848 tmp->uHotDot() = uHotDot;
849 tmp->massHot() = massHot;
850 tmp->fDensityU() = fDensityU;
851 tmp->fThermalCond() = fThermalCond;
852 tmp->fPromoteSum() = fPromoteSum;
853 tmp->fPromoteSumuPred() = fPromoteSumuPred;
854 tmp->fPromoteuPredInit() = fPromoteuPredInit;
858 tmp->dtNew() = dtNew;
860 tmp->dTimeFB() = dTimeFB;
864 tmp->iEaterOrder() = iEaterOrder;
869 void pup(PUP::er &p) {
883 p | treeAcceleration;
907 p | fTimeCoolIsOffUntil;
915 p((
char *) &CoolParticle,
sizeof(CoolParticle));
923 p | fPromoteSumuPred;
924 p | fPromoteuPredInit;
int TYPETest(const GravityParticle *a, unsigned int b)
Test for a type flag.
Definition GravityParticle.h:606
int TYPEReset(GravityParticle *a, unsigned int b)
Unset a type flag.
Definition GravityParticle.h:614
int TYPESet(GravityParticle *a, unsigned int b)
Set a type flag.
Definition GravityParticle.h:610
void unDeleteParticle(GravityParticle *p)
unmark particle as deleted
Definition GravityParticle.h:622
GravityParticle StarFromGasParticle(GravityParticle *p)
Create star particle from gas particle Note that new memory is allocated for the extradata.
Definition GravityParticle.h:637
void deleteParticle(GravityParticle *p)
mark particle as deleted
Definition GravityParticle.h:630
#define IMAGAS
Definition GravityParticle.h:463
#define IMASTAR
Definition GravityParticle.h:466
Information needed to calculate gravity.
Definition GravityParticle.h:33
Class for cross processor data needed for smooth operations.
Definition GravityParticle.h:649
void getParticle(GravityParticle *tmp) const
Fill in a full gravity particle from this object.
Definition GravityParticle.h:795
Fundamental type for a particle.
Definition GravityParticle.h:364
cosmoType fBall
Neighbor search radius for smoothing.
Definition GravityParticle.h:387
int rung
the current rung (greater means faster)
Definition GravityParticle.h:389
bool operator<(const GravityParticle &p) const
Used to sort the particles into tree order.
Definition GravityParticle.h:420
unsigned int iType
Bitmask to hold particle type information.
Definition GravityParticle.h:390
int64_t iOrder
Input order of particles; unique particle ID.
Definition GravityParticle.h:403
ExternalSmoothParticle getExternalSmoothParticle()
Get quantities needed for SPH smooths.
Definition GravityParticle.h:939
cosmoType dtGrav
Definition GravityParticle.h:383