0
$\begingroup$
Clear[Pressure, EnergyDensity, fromPressureToEnergy, 
  fromEnergyToPressure, Ae, Be, Ap, Bp, Er, Mr, Pr, r, h, g1, f1, k1, 
  m1, f2, g2, k2, m2, f3, g3, k3, m3, f4, m4, g4, k4, M, R]; 
Ae = Import["D:\\Energy density.xlsx", {"Data", 1, All, 1}];
Be = Ae*(10^-6/1.1154907);
EnergyDensity = Be/(0.08969);
Ap = Import["D:\\Pressure.xlsx", {"Data", 1, All, 1}];
Bp = Ap*(10^-6/1.1154907);
Pressure = Bp/(0.08969);
fromPressureToEnergy = 
  Interpolation[Most@Transpose[{Pressure, EnergyDensity}], 
   InterpolationOrder -> 1];
fromEnergyToPressure = 
  Interpolation[Most@Transpose[{EnergyDensity, Pressure}], 
   InterpolationOrder -> 1];
Er = (1637.99731*(10^-6/1.1154907)/0.08969); (*Initial value*)
h = 0.0001;
Mr = 10^-33;
Pr = fromEnergyToPressure[Er];
r = h;
While[Pr > 0, 

 g1 = 4*\[Pi]*r^2*Er*.08969;
 f1 = -(1.47*Mr*
      Er*(1 + Pr/Er)*(1 + 4*\[Pi]*r^3*Pr*.08969/Mr))/(r^2*(1 - 
       2*Mr*1.47/r));
 k1 = h*f1;
 m1 = h*g1;
 
 f2 = -(1.47*Mr*
      Er*(1 + (Pr + k1/2)/Er)*(1 + 
        4*\[Pi]*(r + h/2)^3*(Pr + k1/2)*.08969/Mr))/((r + h/2)^2*(1 - 
       2*Mr*1.47/(r + h/2)));
 g2 = 4*\[Pi]*(r + h/2)^2*(Er + m1/2)*.08969;
 k2 = h*f2;
 m2 = h*g2;
 
 f3 = -(1.47*Mr*
      Er*(1 + (Pr + k2/2)/Er)*(1 + 
        4*\[Pi]*(r + h/2)^3*(Pr + k2/2)*.08969/Mr))/((r + h/2)^2*(1 - 
       2*Mr*1.47/(r + h/2)));
 g3 = 4*\[Pi]*(r + h/2)^2*(Er + m2/2)*.08969;
 k3 = h*f3;
 m3 = h*g3;
 
 f4 = -(1.47*Mr*
      Er*(1 + (Pr + k3)/Er)*(1 + 
        4*\[Pi]*(r + h)^3*(Pr + k3)*.08969/Mr))/((r + h)^2*(1 - 
       2*Mr*1.47/(r + h)));
 g4 = 4*\[Pi]*(r + h)^2*(Er + m3)*.08969;
 k4 = h*f4;
 m4 = h*g4;

 Pr = Pr + 1/6*(k1 + 2*k2 + 2*k3 + k4);
 Mr = Mr + 1/6*(m1 + 2*m2 + 2*m3 + m4);

 Er = fromPressureToEnergy[Pr];
 r = r + h;
 ]

M = Mr; (*result*)
R = r;(*result*)

Dear Friends in the code above I have an initial value for (Er) which is (1637.99731*(10^-6/1.1154907)/0.08969) and the final results are (M) and (R).

My question is that how I can solve this code for various (Er) which varies from the initial value above to (135*(10^-6/1.1154907)/0.08969) and for each of the (Er) I want to save M and R. Therefore, finally I could have something like a list that consists of different (M) and (R) that related to various (Er) which are considered as the initial value.

In fact, my code only works for one (Er) and as a result one (M) and (R) for the chosen (Er). What I need to do is solving my code for various (Er) regarding the mentioned interval.

$\endgroup$
  • $\begingroup$ Wrap the whole lot into a function that takes those parameters (except anything constant, leave outside) and then call it in a Table with different Er arguments. Return a list or association from the function with your values of M,R. $\endgroup$ – flinty Jul 24 at 15:09
  • $\begingroup$ There are many ways to do this. Map, Table and Sow + Reap come to mind. See, e.g., mathematica.stackexchange.com/a/181603/43522 $\endgroup$ – Sjoerd Smit Jul 24 at 15:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.