-------- Forwarded Message --------
Subject:        Re: [CCR PATCH] PO2 Calculations extracted to separate function.
Date:   Mon, 15 Sep 2014 14:01:14 +0200
From:   Willem Ferguson <[email protected]>
Reply-To:       [email protected]
Organization:   University of Pretoria
To:     Robert Helling <[email protected]>



On 15/09/2014 12:09, Robert Helling wrote:

On 14.09.2014, at 20:39, Willem Ferguson <[email protected] <mailto:[email protected]>> wrote:

Willem,

This patch takes the po2 calculations in calculate_gas_information()
and puts these in a separate function calc_po2(). This was suggested
by Robert Helling. Several variables are required to do this calcu-
lation, passed to the function as a pointer to a structure defined
in profile.h

I must admit, I don’t quite get this. What is the point of that new structure? I don’t see what you earn from combining the ambient pressure and some info from struct gasmix. Why don’t you pass the ambient pressure and a pointer to the gasmix to your new function.

Another warning: The ambient pressure variable is double (and not int) because it has units of bar (and not mbar) different from what the comment in the header file says. So have the partial pressure fields in entry as they are plotted and the user wants to see bars, not our internal units.

To me, it would make much more sense to have a helper function that returns all three partial pressures given a gas mix and an ambient pressure (and a measured pO2 and possibly another variable indicating the type of dive i.e. OC, CCR or PSCR).

BTW, code with a similar function (i.e. get partial pressures from an ambient pressure and gas mix) are also found in add_segemnt in deco.c. There, you also want to use your helper functions.

Best
Robert


Robert, thanks for the comment. Interesting stuff. If this could be written in a way to be of benefit elsewhere, it's the undisputed route.

As is at the moment ambient pressure is defined as a double in gas_record (in profile.h). But that is beside the point. I would like us to communicate clearly because I think you have a good idea to pursue here. The input structure for the function enables several variables to be passed in an efficient way. With the expansion to CCR dive data, this will become important. If you have any feeling about an efficient approach to do this, please tell me what your thoughts are.

As I intend it, the type of dive computer (OC, CCR ate present, but nothing preventing to add SCR also) needs to be an *input parameter* to the function so that the appropriate part of the algorithm will be used. It is not intended that it should be an output parameter.

Also, returning several values complicates things. One possibility is to expand the gasmix structure (dive.h) to be a general communication mechanism between the calc_po2() function and the outside world. The three different computed partial pressures would then be stored in the structure, as well as the measured po2, ambient pressure and dc type (the latter three are already input parameters). In that case, the name of the function is likely to change to calc_partial_pressures().

Does this make sense?
Kind regards,
willem





_______________________________________________
subsurface mailing list
[email protected]
http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to