program hello USE cpinterface use iso_c_binding implicit none !Initialize the variables used in the example real(C_DOUBLE) T, Q character(LEN=32) fluid, out1, n1, n2 real(C_DOUBLE) dens1, dens2, dens3 CHARACTER(100) mesgbfr integer(C_long) handle integer(C_long) errcode, bfrlen integer(C_long) QT_INPUTS, iDmass mesgbfr(1:100) = ' ' bfrlen = 100 ! ---------------------- ! Example calculates density of saturated liquid propane at 300 K: ! --------------------- T = 300 ! Temperature [K] Q = 0 ! Quality [-] out1 = "D"//C_NULL_CHAR ! String with of the output Property n1 = "T"//C_NULL_CHAR ! String with of the input Property #1 n2 = "Q"//C_NULL_CHAR ! String with of the input Property #2 fluid = "Propane"//C_NULL_CHAR ! String with the fluid name dens1 = PropsSI(out1, n1, T, n2, Q, fluid) !calling props, strings are Variables dens2 = PropsSI(C_CHAR_"D"//C_NULL_CHAR, C_CHAR_"T"//C_NULL_CHAR, T, C_CHAR_"Q"//C_NULL_CHAR, Q, fluid) !calling props defining the strings directly in the arguments Print *, dens1, dens2 ! -------- ! Do the same calculation with the low-level interface QT_INPUTS = get_input_pair_index(C_CHAR_"QT_INPUTS"//C_NULL_CHAR) iDmass = get_param_index("Dmass"//C_NULL_CHAR) handle = AbstractState_factory(C_CHAR_"HEOS"//C_NULL_CHAR,fluid,errcode,mesgbfr,bfrlen) if (errcode .ne. 0) then Print *, handle, errcode, mesgbfr call exit() endif call AbstractState_update(handle,QT_INPUTS, 0.D0, 300.D0, errcode,mesgbfr,bfrlen) if (errcode .ne. 0) then Print *, errcode, mesgbfr call exit() endif dens3 = AbstractState_keyed_output(handle,iDmass,errcode,mesgbfr,bfrlen) if (errcode .ne. 0) then Print *, errcode, mesgbfr call exit() endif Print *, dens3 end program hello