Skip to content

Commit e592635

Browse files
committed
Added LuminosityInitial to BodyCopyStellar.
The code is now memcheck clean!
1 parent c9c998e commit e592635

File tree

2 files changed

+32
-25
lines changed

2 files changed

+32
-25
lines changed

src/atmesc.c

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1446,34 +1446,37 @@ double fdAtmEscXi(BODY *body, int iBody) {
14461446
return dXi;
14471447
}
14481448

1449-
double fdKTide(BODY *body, IO *io, int iBody) {
1449+
double fdKTide(BODY *body, IO *io, int iNumBodies, int iBody) {
14501450
double dKTide;
14511451

14521452
// For stars and circumbinary planets, assume no Ktide enhancement
14531453
if (body[iBody].bBinary && body[iBody].iBodyType == 0) {
14541454
dKTide = 1.0;
14551455
} else {
1456-
if (body[iBody].dAtmEscXi > 1) {
1457-
dKTide = (1 - 3 / (2 * body[iBody].dAtmEscXi) +
1458-
1 / (2 * pow(body[iBody].dAtmEscXi, 3)));
1459-
if (dKTide < body[iBody].dMinKTide) {
1460-
dKTide = body[iBody].dMinKTide;
1456+
if (iNumBodies > 1) {
1457+
if (body[iBody].dAtmEscXi > 1) {
1458+
dKTide = (1 - 3 / (2 * body[iBody].dAtmEscXi) +
1459+
1 / (2 * pow(body[iBody].dAtmEscXi, 3)));
1460+
if (dKTide < body[iBody].dMinKTide) {
1461+
dKTide = body[iBody].dMinKTide;
1462+
}
1463+
} else {
1464+
if (!io->baRocheMessage[iBody] && io->iVerbose >= VERBINPUT &&
1465+
(!body[iBody].bUseBondiLimited && !body[iBody].bAtmEscAuto)) {
1466+
fprintf(stderr,
1467+
"WARNING: Roche lobe radius is larger than %s's XUV radius. "
1468+
"Evolution may not be accurate.\n",
1469+
body[iBody].cName);
1470+
fprintf(stderr, "Consider setting bUseBondiLimited = 1 or bAtmEscAuto "
1471+
"= 1 to limit envelope mass loss.\n");
1472+
io->baRocheMessage[iBody] = 1;
1473+
}
1474+
// Fix dKTide to prevent infs when in Roche Lobe overflow
1475+
dKTide = 1.0;
14611476
}
14621477
} else {
1463-
if (!io->baRocheMessage[iBody] && io->iVerbose >= VERBINPUT &&
1464-
(!body[iBody].bUseBondiLimited && !body[iBody].bAtmEscAuto)) {
1465-
fprintf(stderr,
1466-
"WARNING: Roche lobe radius is larger than %s's XUV radius. "
1467-
"Evolution may not be accurate.\n",
1468-
body[iBody].cName);
1469-
fprintf(stderr, "Consider setting bUseBondiLimited = 1 or bAtmEscAuto "
1470-
"= 1 to limit envelope mass loss.\n");
1471-
io->baRocheMessage[iBody] = 1;
1472-
}
1473-
// Fix dKTide to prevent infs when in Roche Lobe overflow
14741478
dKTide = 1.0;
14751479
}
1476-
// body[iBody].dKTide = 1.0;
14771480
}
14781481

14791482
return dKTide;
@@ -1728,7 +1731,7 @@ void fnPropsAuxAtmEsc(BODY *body, EVOLVE *evolve, IO *io, UPDATE *update,
17281731
body[iBody].dBondiRadius = fdBondiRadius(body, iBody);
17291732
body[iBody].dRocheRadius = fdRocheRadius(body, evolve->iNumBodies, iBody);
17301733
body[iBody].dAtmEscXi = fdAtmEscXi(body, iBody);
1731-
body[iBody].dKTide = fdKTide(body, io, iBody);
1734+
body[iBody].dKTide = fdKTide(body, io, evolve->iNumBodies, iBody);
17321735

17331736
// The XUV flux
17341737
if (body[iBody].bCalcFXUV) {
@@ -3424,11 +3427,15 @@ Modifier for H Ref Flux to include oxygen drag at a snapshot in time
34243427
void WriteHRefODragMod(BODY *body, CONTROL *control, OUTPUT *output,
34253428
SYSTEM *system, UNITS *units, UPDATE *update, int iBody,
34263429
double *dTmp, char cUnit[]) {
3427-
double rat = (body[iBody].dCrossoverMass / ATOMMASS - QOH) /
3428-
(body[iBody].dCrossoverMass / ATOMMASS - 1.);
3429-
double XO = fdAtomicOxygenMixingRatio(body[iBody].dSurfaceWaterMass,
3430-
body[iBody].dOxygenMass);
3431-
*dTmp = pow(1. + (XO / (1. - XO)) * QOH * rat, -1);
3430+
if (body[iBody].dCrossoverMass / ATOMMASS - 1. != 0) {
3431+
double rat = (body[iBody].dCrossoverMass / ATOMMASS - QOH) /
3432+
(body[iBody].dCrossoverMass / ATOMMASS - 1.);
3433+
double XO = fdAtomicOxygenMixingRatio(body[iBody].dSurfaceWaterMass,
3434+
body[iBody].dOxygenMass);
3435+
*dTmp = pow(1. + (XO / (1. - XO)) * QOH * rat, -1);
3436+
} else {
3437+
*dTmp = -1;
3438+
}
34323439
strcpy(cUnit, "");
34333440
}
34343441

src/stellar.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ void BodyCopyStellar(BODY *dest, BODY *src, int foo, int iNumBodies,
2929
dest[iBody].dLXUV = src[iBody].dLXUV;
3030
dest[iBody].bRossbyCut = src[iBody].bRossbyCut;
3131
dest[iBody].bEvolveRG = src[iBody].bEvolveRG;
32+
dest[iBody].dLuminosityInitial = src[iBody].dLuminosityInitial;
3233
dest[iBody].dLuminosityAmplitude = src[iBody].dLuminosityAmplitude;
3334
dest[iBody].dLuminosityFrequency = src[iBody].dLuminosityFrequency;
3435
dest[iBody].dLuminosityPhase = src[iBody].dLuminosityPhase;
@@ -1524,7 +1525,6 @@ double fdTemperature(BODY *body, SYSTEM *system, int *iaBody) {
15241525
}
15251526
}
15261527
if (body[iaBody[0]].iStellarModel == STELLAR_MODEL_SINEWAVE) {
1527-
printf("%lf\n",body[iaBody[0]].dLuminosity);
15281528
foo = fdEffectiveTemperature(body,iaBody[0]);
15291529
return foo;
15301530
}

0 commit comments

Comments
 (0)