First time here? Check out the Help page!
1 | initial version |
So I ended up figuring it out.
Go to C:\EnergyPlusV8-2-0\PostProcess
(or wherever you have installed E+). You should see ReadVarsESO.exe
and RunReadESO.bat
.
Paste here your eplusout.eso
file generated by OpenStudio (located in My_Model\run\5-EnergyPlus-0
). Do not rename it! It has to be named eplusout.eso
.
Copy the RunReadoESO.bat
and rename to RunReadESO-NoLimit.bat
.
Open it up and modify like the following (only the fourth line changes)
set rvpath=
if EXIST eplusout.inp goto :inp
rem produces all variables in .eso file to .csv
%rvpath%readvarseso.exe "" N
goto :done
:inp
rem reads variable specifications from input file
%rvpath%ReadVarsESO.exe eplusout.inp
:done
set rvpath=
4.Save and close the bat file. Double click on it, done.
I took a look at the source code, and especially ReadVarsEso.f90
.
Turns out there a limit of 255 indeed, with this integer, parameter :: numallowed=255
Now, it's only used if another parameter, limited
is set to true, which is its default state.
if (ntrack > numallowed) then
if (limited) then
ntrack=numallowed
write(*,*) 'too many variables requested, will go with first ',numallowed
Now the interesting section is here:
cmdargs=Command_Argument_Count()
if (cmdargs == 0) then
getvarsfromeso=.true.
else ! there are command args, at least one...
arg=1
Call Get_Command_Argument(arg,varfilename)
varfilename=ADJUSTL(varfilename)
if (varfilename == blank) then
getvarsfromeso=.true.
endif
argnum=arg+1
Freqs=0
do arg=argnum,cmdargs
Call Get_Command_Argument(arg,LineArg)
! timestep
if (LineArg(1:1) == 't' .or. LineArg(1:1) == 'T') Freqs=1
**[... 'Truncated for clarity' ...]**
! unlimited
if (LineArg(1:1) == 'u' .or. LineArg(1:1) == 'U') Limited=.false.
! nolimit
if (LineArg(1:1) == 'n' .or. LineArg(1:1) == 'N') Limited=.false.
enddo
endif
One thing is that we want getvarsfromeso = .true.
, otherwise the program will be expecting a .rvi
file which we don't have. We just want all variables to get converted to csv.
So if we pass it 0 arguments, it works nicely because getvarsfromeso = .true.
, but we end up limited to 255 columns.
If we pass it at least one argument, the first one is the filename. In our case, we want the getvarsfromeso = .true.
so we have to pass it a blank first argument ""
Then, we want to end up with limited=.false.
, so passing N
as a second argument achieves that.
And that's why %rvpath%readvarseso.exe "" N
works.
But it will be expecting a file named "eplusout.eso" so that's why I said in 2.
above that you couldn't rename it.
2 | No.2 Revision |
So I ended up figuring it out.
Go to C:\EnergyPlusV8-2-0\PostProcess
(or wherever you have installed E+). You should see ReadVarsESO.exe
and RunReadESO.bat
.
Paste here your eplusout.eso
file generated by OpenStudio (located in My_Model\run\5-EnergyPlus-0
). Do not rename it! It has to be named eplusout.eso
.
Copy the RunReadoESO.bat
and rename to RunReadESO-NoLimit.bat
.
Open it up and modify like the following (only the fourth line changes)
set rvpath=
if EXIST eplusout.inp goto :inp
rem produces all variables in .eso file to .csv
%rvpath%readvarseso.exe "" N
goto :done
:inp
rem reads variable specifications from input file
%rvpath%ReadVarsESO.exe eplusout.inp
:done
set rvpath=
4.Save and close the bat file. Double click on it, done.
I took a look at the source code, and especially ReadVarsEso.f90
.
Turns out there a limit of 255 indeed, with this integer, parameter :: numallowed=255
Now, it's only used if another parameter, limited
is set to true, which is its default state.
if (ntrack > numallowed) then
if (limited) then
ntrack=numallowed
write(*,*) 'too many variables requested, will go with first ',numallowed
Now the The interesting section is here:really this one:
cmdargs=Command_Argument_Count()
if (cmdargs == 0) then
getvarsfromeso=.true.
else ! there are command args, at least one...
arg=1
Call Get_Command_Argument(arg,varfilename)
varfilename=ADJUSTL(varfilename)
if (varfilename == blank) then
getvarsfromeso=.true.
endif
argnum=arg+1
Freqs=0
do arg=argnum,cmdargs
Call Get_Command_Argument(arg,LineArg)
! timestep
if (LineArg(1:1) == 't' .or. LineArg(1:1) == 'T') Freqs=1
**[... 'Truncated for clarity' ...]**
! unlimited
if (LineArg(1:1) == 'u' .or. LineArg(1:1) == 'U') Limited=.false.
! nolimit
if (LineArg(1:1) == 'n' .or. LineArg(1:1) == 'N') Limited=.false.
enddo
endif
One thing is that we want getvarsfromeso = .true.
, otherwise the program will be expecting a .rvi
file which we don't have. We just want all variables to get converted to csv.
So if we pass it 0 arguments, it works nicely because getvarsfromeso = .true.
, but we end up limited to 255 columns.columns, because by default limited=.true.
.
If we pass it at least one argument, the first one is the filename. In our case, we want the getvarsfromeso = .true.
so we have to pass it a blank first argument ""
Then, we want to end up with limited=.false.
, so passing N
as a second argument achieves that.
And that's why %rvpath%readvarseso.exe "" N
works.
works. But it will be expecting a file named "eplusout.eso" eplusout.eso
- that's the default anyway - so that's why I said in 2.
above that you couldn't rename it.