Cylinder pressure interpolation and end pressure display for CCR

Robert C. Helling helling at atdotde.de
Sun Nov 9 01:43:09 PST 2014


On 09 Nov 2014, at 07:12, Willem Ferguson <willemferguson at zoology.up.ac.za> wrote:

Willem,

> After a sleep I can think (I hope) more clearly. I attach a function from gaspressures.c (not the whole of gasspressures.c).  It is possible to use a switch between the cylinder_use types as shown in this example. But its utility is limited. The interpolation requires knowledge about the specific cylinder that is used for a particular point on the dive profile. Think in terms of cylinder changes during the dive.

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?

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. 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).

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.

Best
Robert

--                                                                              
.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oO 
Robert C. Helling     Elite Master Course Theoretical and Mathematical Physics  
                      Scientific Coordinator                                   
                      Ludwig Maximilians Universitaet Muenchen, Dept. Physik    
print "Just another   Phone: +49 89 2180-4523  Theresienstr. 39, rm. B339       
    stupid .sig\n";   http://www.atdotde.de 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 495 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20141109/ce899065/attachment.sig>


More information about the subsurface mailing list