When does the colloidal binding update come out for CADET-Process

Any rough timeline on when is this (and other CADET changes from latest update) expected to be supported on CADET-Process?

1 Like

Hi Ronan,

the Colloidal isotherm is not yet officially supported in CADET-Core, which is why it’s not yet in CADET-Process. If you want to use it, you can add it to CADET-Process using this guide.
What other features are you missing from v4.4.0?

Best regards

Jo

Thank you!
This is more of a general CADET capabilities implementation question than CADET-Process, but how do we:

  1. Have different particle types in CADET-Process?
  2. 2D GRM and radial dimension support
  3. Related to 1 above, how would I implement SEC in CADET-Process? I understand in CADET I can do no binding and then using different pore accessibilty but not different particle types.

Currently not very high on our priorities list. But if someone has a special case, we might bump it.

We’re in the process, should be there in the next 1-2 months.

SEC is a tricky question. Yes, you could use the pore accessibility, but note that this cannot be combined with any binding model or it lead to inconsistencies. Hopefully, we can soon get some funding to work on this more thouroughly.

Edit: And to actually answer your question, the pore accessibility factor is already available for column models in CADET-Process.

Thank you! I assume the same goes for multiple bound states that we cannot do in CADET-Process?

Hi Ronan and Johannes,

I followed the steps in the guide and the colloidal isotherm is working in CADET-Process for me now :smiley:

I figured I’d share the code I added to perhaps save someone some typing.

Here’s for the first step:

'MultiComponentColloidal': {
    'name': 'MULTI_COMPONENT_COLLOIDAL',
    'parameters': {
        'IS_KINETIC': 'is_kinetic',
        'COL_PHI': 'phase_ratio',
        'COL_KAPPA_EXP': 'kappa_exponential',
        'COL_KAPPA_FACT': 'kappa_factor',
        'COL_KAPPA_CONST': 'kappa_constant',
        'COL_CORDNUM': 'coordination_number',
        'COL_LOGKEQ_PH_EXP': 'logkeq_ph_exponent',           
        'COL_LOGKEQ_SALT_POWEXP': 'logkeq_power_exponent',
        'COL_LOGKEQ_SALT_POWFACT': 'logkeq_power_factor',
        'COL_LOGKEQ_SALT_EXPFACT': 'logkeq_exponent_factor',
        'COL_LOGKEQ_SALT_EXPARGMULT': 'logkeq_exponent_multiplier',
        'COL_BPP_PH_EXP': 'bpp_ph_exponent',
        'COL_BPP_SALT_POWEXP': 'bpp_power_exponent',
        'COL_BPP_SALT_POWFACT': 'bpp_power_factor',
        'COL_BPP_SALT_EXPFACT': 'bpp_exponent_factor',
        'COL_BPP_SALT_EXPARGMULT': 'bpp_exponent_multiplier',
        'COL_RADIUS': 'protein_radius',
        'COL_KKIN': 'kinetic_rate_constant',
        'COL_LINEAR_THRESHOLD': 'linear_threshold',
        'COL_USE_PH': 'use_ph',
    },
},

And for the second:

class MultiComponentColloidal(BindingBaseClass):
    """Colloidal isotherm from Xu and Lenhoff 2009.

    Attributes
    ----------
    phase_ratio : unsigned float.
        Phase ratio.
    kappa_exponential : unsigned float.
        Screening term exponential factor.
    kappa_factor : unsigned float.
        Screening term factor.
    kappa_constant : unsigned float.
        Screening term constant.
    coordination_number : unsigned integer.
        Coordination number.
    logkeq_ph_exponent : list of unsigned floats. 
        Equilibrium constant factor exponent term for pH. Size depends on `n_comp`.
    logkeq_power_exponent : list of unsigned floats.
        Equilibrium constant power exponent term for salt. Size depends on `n_comp`.
    logkeq_power_factor : list of unsigned floats.
        Equilibrium constant power factor term for salt. Size depends on `n_comp`.
    logkeq_exponent_factor : list of unsigned floats.
        Equilibrium constant exponent factor term for salt. Size depends on `n_comp`.
    logkeq_exponent_multiplier : list of unsigned floats.
        Equilibrium constant exponent multiplier term for salt. Size depends on `n_comp`.
    bpp_ph_exponent : list of unsigned floats.
        BPP constant exponent factor term for pH. Size depends on `n_comp`.
    bpp_power_exponent : list of unsigned floats.
        Bpp constant power exponent term for salt. Size depends on `n_comp`.
    bpp_power_factor : list of unsigned floats.
        Bpp constant power factor term for salt. Size depends on `n_comp`.
    bpp_exponent_factor  : list of unsigned floats.
        Bpp constant exponent factor term for salt. Size depends on `n_comp`.
    bpp_exponent_multiplier : list of unsigned floats.
        Bpp constant exponent multiplier term for salt. Size depends on `n_comp`.  
    protein_radius : list of unsigned floats.
        Protein radius. Size depends on `n_comp`.
    kinetic_rate_constant : list of unsigned floats.
        Adsorption kinetics. Size depends on `n_comp`.
    linear_threshold : unsigned float.
        Linear threshold.
    use_ph : Boolean.
        Include pH or not.

    """
    
    bound_states = SizedUnsignedIntegerList(
        size=('n_binding_sites', 'n_comp'), default=1
    )
    
    phase_ratio = UnsignedFloat()
    kappa_exponential = UnsignedFloat()
    kappa_factor = UnsignedFloat()
    kappa_constant = UnsignedFloat()
    coordination_number = UnsignedInteger()
    logkeq_ph_exponent = SizedList(size='n_comp')      
    logkeq_power_exponent = SizedList(size='n_comp')
    logkeq_power_factor = SizedList(size='n_comp')
    logkeq_exponent_factor = SizedList(size='n_comp')
    logkeq_exponent_multiplier = SizedList(size='n_comp')
    bpp_ph_exponent = SizedList(size='n_comp')
    bpp_power_exponent = SizedList(size='n_comp')
    bpp_power_factor = SizedList(size='n_comp')
    bpp_exponent_factor = SizedList(size='n_comp')
    bpp_exponent_multiplier = SizedList(size='n_comp')
    protein_radius = SizedList(size='n_comp')
    kinetic_rate_constant = SizedList(size='n_comp')
    linear_threshold = UnsignedFloat(default=1e-8)
    use_ph = Bool(default=False)

    _parameters = [
        'phase_ratio',
        'kappa_exponential',
        'kappa_factor',
        'kappa_constant',
        'coordination_number',
        'logkeq_ph_exponent',           
        'logkeq_power_exponent',
        'logkeq_power_factor',
        'logkeq_exponent_factor',
        'logkeq_exponent_multiplier',
        'bpp_ph_exponent',
        'bpp_power_exponent',
        'bpp_power_factor',
        'bpp_exponent_factor',
        'bpp_exponent_multiplier',
        'protein_radius',
        'kinetic_rate_constant',
        'linear_threshold',
        'use_ph',
    ]
7 Likes

Hey Angela,

thanks!

Would you mind opening a PR on GitHub?

2 Likes

Done, with help from @j.breuer :slight_smile:

4 Likes

Nice, thanks a lot! Will review later!