// Created by libAntimony v2.13.0
function NADPH_production(j, S1, Nt)
  (j/2)*(S1/Nt);
end

NADPH_production is "NADPH production"

function carboxylation(Vc, Vj, Vp)
  ((Vc + Vj - abs(Vc - Vj))/2 + Vp - abs((Vc + Vj - abs(Vc - Vj))/2 - Vp))/2;
end

carboxylation is "Carboxylation"

function PGA_consumption(S1, Rp, R, Nt, Vc)
  (S1/Rp)*(R/Nt)*Vc;
end

PGA_consumption is "PGA consumption"

function oxygenation(phi, Vc, Vj, Vp)
  phi*((Vc + Vj - abs(Vc - Vj))/2 + Vp - abs((Vc + Vj - abs(Vc - Vj))/2 - Vp))/2;
end

oxygenation is "Oxygenation"


model *Arnold2011_Schultz2003_RuBisCO-CalvinCycle()

  // Compartments and Species:
  compartment chloroplast;
  species $RuBP in chloroplast, PGA in chloroplast, NADPH in chloroplast;
  species $CO2 in chloroplast, $O2 in chloroplast, $NADP in chloroplast;

  // Assignment Rules:
  NADP := Nt - NADPH;
  J := alpha*PPFD/sqrt(1 + (alpha*PPFD/Jmax)^2)/(65*0.5);
  phi := 0.21*((g0 + (h*k/CO2)*(v_c - Rd))*O2/Ko)/((g0 + (h*k - 1.6)*(v_c - Rd))/Kc);
  v_c := (abs((abs(Vc + Vj) - abs(Vc - Vj))/2 + Vp) - abs((abs(Vc + Vj) - abs(Vc - Vj))/2 - Vp))/2;
  Vc := Vcmax*((CO2 - 1.6*((1/2)*((1.6*(Vcmax - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + Kc*(1 + O2/Ko)) + (k*h/CO2)*Vcmax*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + Kc*(1 + O2/Ko))) + sqrt(((1.6*(Vcmax - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + Kc*(1 + O2/Ko)) + (k*h/CO2)*Vcmax*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + Kc*(1 + O2/Ko))))^2 + 4*g0*((Rd*(CO2 + Kc*(1 + O2/Ko)) + Vcmax*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + Kc*(1 + O2/Ko))))))/(g0 + (k*h/CO2)*(1/2)*((1.6*(Vcmax - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + Kc*(1 + O2/Ko)) + (k*h/CO2)*Vcmax*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + Kc*(1 + O2/Ko))) + sqrt(((1.6*(Vcmax - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + Kc*(1 + O2/Ko)) + (k*h/CO2)*Vcmax*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + Kc*(1 + O2/Ko))))^2 + 4*g0*((Rd*(CO2 + Kc*(1 + O2/Ko)) + Vcmax*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + Kc*(1 + O2/Ko)))))))))/((CO2 - 1.6*((1/2)*((1.6*(Vcmax - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + Kc*(1 + O2/Ko)) + (k*h/CO2)*Vcmax*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + Kc*(1 + O2/Ko))) + sqrt(((1.6*(Vcmax - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + Kc*(1 + O2/Ko)) + (k*h/CO2)*Vcmax*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + Kc*(1 + O2/Ko))))^2 + 4*g0*((Rd*(CO2 + Kc*(1 + O2/Ko)) + Vcmax*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + Kc*(1 + O2/Ko))))))/(g0 + (k*h/CO2)*(1/2)*((1.6*(Vcmax - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + Kc*(1 + O2/Ko)) + (k*h/CO2)*Vcmax*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + Kc*(1 + O2/Ko))) + sqrt(((1.6*(Vcmax - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + Kc*(1 + O2/Ko)) + (k*h/CO2)*Vcmax*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + Kc*(1 + O2/Ko))))^2 + 4*g0*((Rd*(CO2 + Kc*(1 + O2/Ko)) + Vcmax*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + Kc*(1 + O2/Ko))))))))) + Kc*(1 + O2/Ko)));
  Vj := (J/4)*((CO2 - 1.6*((1/2)*((1.6*(J/4 - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + 2*Gamma) + ((k*h/CO2)*J/4)*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + 2*Gamma)) + sqrt(((1.6*(J/4 - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + 2*Gamma) + ((k*h/CO2)*J/4)*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + 2*Gamma)))^2 + 4*g0*((Rd*(CO2 + 2*Gamma) + (J/4)*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + 2*Gamma)))))/(g0 + (k*h/CO2)*(1/2)*((1.6*(J/4 - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + 2*Gamma) + ((k*h/CO2)*J/4)*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + 2*Gamma)) + sqrt(((1.6*(J/4 - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + 2*Gamma) + ((k*h/CO2)*J/4)*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + 2*Gamma)))^2 + 4*g0*((Rd*(CO2 + 2*Gamma) + (J/4)*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + 2*Gamma))))))))/((CO2 - 1.6*((1/2)*((1.6*(J/4 - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + 2*Gamma) + ((k*h/CO2)*J/4)*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + 2*Gamma)) + sqrt(((1.6*(J/4 - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + 2*Gamma) + ((k*h/CO2)*J/4)*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + 2*Gamma)))^2 + 4*g0*((Rd*(CO2 + 2*Gamma) + (J/4)*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + 2*Gamma)))))/(g0 + (k*h/CO2)*(1/2)*((1.6*(J/4 - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + 2*Gamma) + ((k*h/CO2)*J/4)*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + 2*Gamma)) + sqrt(((1.6*(J/4 - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 + 2*Gamma) + ((k*h/CO2)*J/4)*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + 2*Gamma)))^2 + 4*g0*((Rd*(CO2 + 2*Gamma) + (J/4)*(Gamma - CO2))/(1.6 - (k*h/CO2)*(CO2 + 2*Gamma)))))))) + 2*Gamma));
  Vp := 3*TPU*((CO2 - 1.6*((1/2)*((1.6*(3*TPU - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 - Gamma) - k*h*3*TPU)/(1.6 - (k*h/CO2)*(CO2 - Gamma)) + sqrt(((1.6*(3*TPU - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 - Gamma) - k*h*3*TPU)/(1.6 - (k*h/CO2)*(CO2 - Gamma)))^2 + 4*g0*((Rd*(CO2 - Gamma) - 3*TPU*CO2)/(1.6 - (k*h/CO2)*(CO2 - Gamma)))))/(g0 + (k*h/CO2)*(1/2)*((1.6*(3*TPU - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 - Gamma) - k*h*3*TPU)/(1.6 - (k*h/CO2)*(CO2 - Gamma)) + sqrt(((1.6*(3*TPU - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 - Gamma) - k*h*3*TPU)/(1.6 - (k*h/CO2)*(CO2 - Gamma)))^2 + 4*g0*((Rd*(CO2 - Gamma) - 3*TPU*CO2)/(1.6 - (k*h/CO2)*(CO2 - Gamma))))))))/(CO2 - 1.6*((1/2)*((1.6*(3*TPU - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 - Gamma) - k*h*3*TPU)/(1.6 - (k*h/CO2)*(CO2 - Gamma)) + sqrt(((1.6*(3*TPU - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 - Gamma) - k*h*3*TPU)/(1.6 - (k*h/CO2)*(CO2 - Gamma)))^2 + 4*g0*((Rd*(CO2 - Gamma) - 3*TPU*CO2)/(1.6 - (k*h/CO2)*(CO2 - Gamma)))))/(g0 + (k*h/CO2)*(1/2)*((1.6*(3*TPU - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 - Gamma) - k*h*3*TPU)/(1.6 - (k*h/CO2)*(CO2 - Gamma)) + sqrt(((1.6*(3*TPU - Rd) + ((k*h/CO2)*Rd + g0)*(CO2 - Gamma) - k*h*3*TPU)/(1.6 - (k*h/CO2)*(CO2 - Gamma)))^2 + 4*g0*((Rd*(CO2 - Gamma) - 3*TPU*CO2)/(1.6 - (k*h/CO2)*(CO2 - Gamma))))))) - Gamma));

  // Reactions:
  PGA_prod_Vc: $RuBP + $CO2 + 2 NADPH => 2 PGA; chloroplast*carboxylation(Vc, Vj, Vp);
  PGA_prod_Vo: $RuBP + $O2 + 2 NADPH => 1.5 PGA; chloroplast*oxygenation(phi, Vc, Vj, Vp);
  PGA_cons: PGA => $RuBP; chloroplast*PGA_consumption(PGA, Rp, NADPH, Nt, Vcmax);
  NADPH_prod: $NADP => NADPH; chloroplast*NADPH_production(J, NADP, Nt);

  // Species initializations:
  RuBP = 2;
  PGA = 2.4;
  NADPH = 0.21;
  CO2 = 35;
  O2 = 21;

  // Compartment initializations:
  chloroplast = 1;

  // Variable initializations:
  Nt = 0.5;
  Rp = 3.2;
  alpha = 0.19;
  PPFD = 1000;
  Jmax = 112.989573402043;
  Gamma = 3.81695;
  Vcmax = 1.4749455852483;
  Kc = 27.8535785188479;
  Ko = 41.9469718861558;
  g0 = 0.468615384615385;
  h = 0.6;
  k = 118.69;
  Rd = 0.00624227154326423;
  TPU = 0.227712577291006;

  // Other declarations:
  var J, phi, v_c, Vc, Vj, Vp;
  const chloroplast, Nt, Rp, alpha, PPFD, Jmax, Gamma, Vcmax, Kc, Ko, g0;
  const h, k, Rd, TPU;

  // Unit definitions:
  unit substance = 1e-3 mole;

  // Display Names:
  PGA_prod_Vc is "PGA production - v_c";
  PGA_prod_Vo is "PGA production - v_o";
  PGA_cons is "PGA consumption";
  NADPH_prod is "NADPH production";

  // SBO terms:
  Nt.sboTerm = 9
  Rp.sboTerm = 9
  alpha.sboTerm = 9
  J.sboTerm = 9
  PPFD.sboTerm = 196
  Jmax.sboTerm = 9
  Gamma.sboTerm = 9
  Vcmax.sboTerm = 9
  Kc.sboTerm = 9
  Ko.sboTerm = 9
  phi.sboTerm = 9
  g0.sboTerm = 9
  h.sboTerm = 9
  k.sboTerm = 9
  v_c.sboTerm = 9
  Rd.sboTerm = 9
  TPU.sboTerm = 196
  Vc.sboTerm = 9
  Vj.sboTerm = 9
  Vp.sboTerm = 9

  // CV terms:
  RuBP hypernym "http://identifiers.org/obo.chebi/CHEBI:16710"
  PGA hypernym "http://identifiers.org/obo.chebi/CHEBI:17050"
  NADPH hypernym "http://identifiers.org/obo.chebi/CHEBI:16474"
  CO2 hypernym "http://identifiers.org/obo.chebi/CHEBI:16526"
  O2 hypernym "http://identifiers.org/obo.chebi/CHEBI:15379"
  NADP hypernym "http://identifiers.org/obo.chebi/CHEBI:25523"
end

Arnold2011_Schultz2003_RuBisCO-CalvinCycle is "Arnold2011_Schultz2003_RuBisCO-CalvinCycle"

Arnold2011_Schultz2003_RuBisCO-CalvinCycle model_entity_is "http://identifiers.org/biomodels.db/MODEL1109270001"
Arnold2011_Schultz2003_RuBisCO-CalvinCycle model_entity_is "http://identifiers.org/biomodels.db/BIOMD0000000385"
Arnold2011_Schultz2003_RuBisCO-CalvinCycle description "http://identifiers.org/pubmed/22001849"
Arnold2011_Schultz2003_RuBisCO-CalvinCycle model_entity_is "http://identifiers.org/obo.go/GO:0019253"
Arnold2011_Schultz2003_RuBisCO-CalvinCycle taxon "http://identifiers.org/taxonomy/33090"
