function fromModelicaDataRecord input ModelicaDataRecord mdata "Mass based data record"; input Real Gf = 0 "Gibbs energy of formation at 298.15K, 1bar"; input Real z = 0 "Charge number"; input PhaseType phase = PhaseType.Gas "State of matter"; input Real Vm = if (phase == PhaseType.Gas) then (1.380649e-23*6.02214076e23)*298.15/100000 else 0.001*mdata.MM "Molar volume"; input Real gamma = 1 "Activity coefficient"; output DataRecord result(MM = mdata.MM, Hf = mdata.Hf*mdata.MM, H0 = mdata.H0*mdata.MM, alow = (mdata.R_s*mdata.MM/(1.380649e-23*6.02214076e23))*mdata.alow, blow = {(mdata.R_s*mdata.MM/(1.380649e-23*6.02214076e23))*mdata.blow[1], (mdata.R_s*mdata.MM/(1.380649e-23*6.02214076e23))*mdata.blow[2], (((mdata.Hf*mdata.MM) - Gf)/298.15)/(1.380649e-23*6.02214076e23) - (mdata.R_s*mdata.MM/(1.380649e-23*6.02214076e23))*(-0.5*mdata.alow[1]/(298.15*298.15) - mdata.alow[2]/298.15 + mdata.alow[3]*5.697596715569114904552663960891 + 298.15*(mdata.alow[4] + 298.15*(0.5*mdata.alow[5] + 298.15*(1/3*mdata.alow[6] + 0.25*mdata.alow[7]*298.15))))}, /*blow[3] = S(298.15)/(1.380649e-23*6.02214076e23) - rSlow(298.15), where S(T)=R* */ahigh = (mdata.R_s*mdata.MM/(1.380649e-23*6.02214076e23))*mdata.ahigh, bhigh = {(mdata.R_s*mdata.MM/(1.380649e-23*6.02214076e23))*mdata.bhigh[1], (mdata.R_s*mdata.MM/(1.380649e-23*6.02214076e23))*mdata.bhigh[2], (((((mdata.Hf*mdata.MM) - Gf)/298.15)/(1.380649e-23*6.02214076e23) - (mdata.R_s*mdata.MM/(1.380649e-23*6.02214076e23))*(-0.5*mdata.alow[1]/(298.15*298.15) - mdata.alow[2]/298.15 + mdata.alow[3]*5.697596715569114904552663960891 + 298.15*(mdata.alow[4] + 298.15*(0.5*mdata.alow[5] + 298.15*(1/3*mdata.alow[6] + 0.25*mdata.alow[7]*298.15))))) + (mdata.R_s*mdata.MM/(1.380649e-23*6.02214076e23))*(-0.5*mdata.alow[1]/(1000*1000) - mdata.alow[2]/1000 + mdata.alow[3]*6.9077552789821370520539743640531 + 1000*(mdata.alow[4] + 1000*(0.5*mdata.alow[5] + 1000*(1/3*mdata.alow[6] + 0.25*mdata.alow[7]*1000))))) - (mdata.R_s*mdata.MM/(1.380649e-23*6.02214076e23))*(-0.5*mdata.ahigh[1]/(1000*1000) - mdata.ahigh[2]/1000 + mdata.ahigh[3]*6.9077552789821370520539743640531 + 1000*(mdata.ahigh[4] + 1000*(0.5*mdata.ahigh[5] + 298.15*(1/3*mdata.ahigh[6] + 0.25*mdata.ahigh[7]*1000))))}, /*bhigh[3] = Slow(1000)/(1.380649e-23*6.02214076e23) - rShigh(1000) */z = z, phase = phase, VmBase = Vm/(1 + log(gamma)), VmExcess = Vm*log(gamma)/(1 + log(gamma))) "Molar based data record"; end fromModelicaDataRecord;