How to assign a value to customer particle property
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!
Best 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
1
Answers
-
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
1 -
Thank you! It all makes sense.
0