How to assign a value to customer particle property

Yangyang_Shen
Yangyang_Shen Altair Community Member
edited February 2024 in Community Q&A

When writing an API, I know how to take the value from a customer property using the getValue function. My question is what function to use to assign a value to a customer property, while the value is calculated in the code? 

 

For example below, I use the "Particle Pore Filling" to calculate the "Particle Moisture". 

      const string CComputation::PARTICLE_POREFILLING = "Particle Pore Filling";

      const string CComputation::PARTICLE_MOISTURE = "Particle Moisture";

      const double* elem1PoreFilling = elem1PropData->getValue(PARTICLE_POREFILLING.c_str());

      double elem1Moisture = *elem1PoreFilling * elem1Mass;  

Then I want to assign the value of elem1Moisture to the PARTICLE_MOISTURE customer property. How can I do this? 

Any advice will be much appreciated! 

 

Tagged:

Best Answer

  • RWood
    RWood
    Altair Employee
    edited February 2024 Answer ✓

    Hi,

    As you say, getValue( ) retrieves a custom property value. The corresponding function for changing the value of a cutstom property is through getDelta( ), as you can't change the value directly (it was implemented this way to be threadsafe). So if you want to change a custom property value, you do so through a delta. It's important to note though that, as the name suggests, this is just a delta/increment. So if you want to set an exact value, you must first subtract off its existing value. So the code will look something lilke:

    double* elem1Moisture_delta = elem1PropData->getDelta(PARTICLE_MOISTURE .c_str());
    const double* elem1Moisture_value = elem1PropData->getValue(PARTICLE_MOISTURE .c_str());

    double elem1Moisture = *elem1PoreFilling * elem1Mass;  

    *elem1Moisture_delta = elem1Moisture  - *elem1Moisture_value;

    Where the last line is changing the value of the custom property by adding on what I want it to be (elem1Moisture) but I also need to subtract the current value (*elem1Moisture_value).

    I'd recommend going through some of the API tutorials for more familiarity with custom properties.

    Cheers,

    Richard

Answers

  • RWood
    RWood
    Altair Employee
    edited February 2024 Answer ✓

    Hi,

    As you say, getValue( ) retrieves a custom property value. The corresponding function for changing the value of a cutstom property is through getDelta( ), as you can't change the value directly (it was implemented this way to be threadsafe). So if you want to change a custom property value, you do so through a delta. It's important to note though that, as the name suggests, this is just a delta/increment. So if you want to set an exact value, you must first subtract off its existing value. So the code will look something lilke:

    double* elem1Moisture_delta = elem1PropData->getDelta(PARTICLE_MOISTURE .c_str());
    const double* elem1Moisture_value = elem1PropData->getValue(PARTICLE_MOISTURE .c_str());

    double elem1Moisture = *elem1PoreFilling * elem1Mass;  

    *elem1Moisture_delta = elem1Moisture  - *elem1Moisture_value;

    Where the last line is changing the value of the custom property by adding on what I want it to be (elem1Moisture) but I also need to subtract the current value (*elem1Moisture_value).

    I'd recommend going through some of the API tutorials for more familiarity with custom properties.

    Cheers,

    Richard

  • Yangyang_Shen
    Yangyang_Shen Altair Community Member
    edited February 2024

    Thank you! It all makes sense. 

Welcome!

It looks like you're new here. Sign in or register to get started.

Welcome!

It looks like you're new here. Sign in or register to get started.