Cylinder pressure interpolation and end pressure display for CCR

Willem Ferguson willemferguson at zoology.up.ac.za
Sun Nov 9 03:49:01 PST 2014


On 09/11/2014 11:43, Robert C. Helling wrote:
>
> I have to admit, I don’t really understand what you are trying to do here. I assume you want to compute the current (i.e. possibly interpolated pressure(s) for a given point in the plot, i.e. for plot_info *entry. Is that indeed the case?
Communication is a real problem here. Yes, last sentence above, you are 
correct.

> I must say, what I would do is:
>
> 1) If entry->o2setpoint == 0 , i.e. this is an OC/bailout segment do the stuff we used to do.
>
> 2) Otherwise we are in CCR mode. Then we have two cylinders in use, entry->cylinderindex which hopefully is the diluent. This we don’t interpolate, we use the last measured value.
No. Wrong with respect to what happens at present, because the default 
interpolation approach is OC which is time-pressure based.

I think we need to separate the present time-pressure implementation 
from what one would like. Again coms is difficult. Since we have diluent 
pressures at 1 bar intervals we start off with good information that is 
MUCH better than just using the last measured value. But between diluent 
pressure readings are other points over which need to be interpolated. 
Without interpolation, the diluent pressure graph would be blocky or 
angular. Why would we not interpolate the pressures of the diluent 
cylinder? I think I am not understanding you. I attach a graph of the 
gas pressures for the sample data file in the dives directory. A way to 
remove the worst of the angularity in that graph would really help since 
I am not convinced that this was the true pattern. Measurement error 
also plays a role.

>   In addition there is the oxygen cylinder get_cylinder_use(dive, oxygen). For that we do an interpolation as in the OC case but with the difference that we only interpolate with time (not with pressure_time or alternatively for the depth use the surface).
Yes, I would agree. But I would think one would also do linear 
interpolation for the diluent??

>
> If you want, I can try to produce a patch that implements this in real (rather than pseudo-) code.
>
> What you sent is obviously missing parts so I am not sure what you are aiming at.
>
> But looking at code like
>
> 			switch (dive->cylinder[entry->cylinderindex].cylinder_use) {
> 			case oxygen :
> 				cylinderindex = get_cylinder_use(dive, oxygen);
> 				break;
> 			case diluent :
> 				cylinderindex = get_cylinder_use(dive, diluent);
> 				break;
> 			case bailout :
> 				cylinderindex = entry->cylinderindex;
> 				break;
> 			default ;
> 			}
>
> it seems to me that this is tautological: Let me translate my interoperation of that code into words:
>
> Look at the cylinder_use of the cylinder with index entry->cylinder index.
> If it is oxygen, cylinderindex should be the index of the cylinder whose cylinder_use is oxygen [why wouldn’t that be entry->cylinderindex ?]
> If it is diluent cylinderindex should be the cylinder whose cylinder_use is diluent [again that wouldn’t necessarily be entry->cylinderindex only if there are several diluents]
> Otherwise cylinderindex should be entry->cylinderindex.
>
> So in total they only possibility that after that code block cylinderindex != entry->cylinderindex would be the weird case that there are several diluents and even then I am not sure that the result then is what you want.
>
>
As far as the present implementation is concerned, I suspect it would be 
fairly easy (not simple) to to changes. We just need to agree on the 
principle of interpolation for the diluent.

Robert you are way ahead of me so therefore your comment is important.
Kind regards,
willem

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Robert.png
Type: image/png
Size: 23969 bytes
Desc: not available
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20141109/3a1d27cd/attachment-0001.png>


More information about the subsurface mailing list