Discussions
Categories
Groups
Documentation
Knowledge base
Developer portal
App catalog
The Hub
GitHub
Home
Newly Imported
User Forums
How it Works
DC worksheet with nested parts
medini_1053080245
Hello, We have an issue with the DC worksheet as the nested parts (e.g. connectors with pin breakdown as a percentage of the parent): It seems that the total failure rate (of the connector) is counted two times (one time for the parent and one time for the sum of nested pins) It seems that this issue is well-known by Ansys as it is mentioned in the help What are our options to have consistent metrics (all): Total failure rate Total safety related Total not safety related SPFM LFM ... We found a way to have all metrics working well except the total failure rate by unchecking the parent as Safety related. But the total failure rate is still wrong. Is there a plan to solve it?
Find more posts tagged with
medini
medini legacy
Accepted answers
All comments
medini_1053080245
Little up for this topic. As I was saying, we found a way to ignore the failure rate Safety-related and not Safety related. But for the total, I really do not understand why MEDINI gives the opportunity to split a parent Failure rate in many nested failure rates (e.g. pins) while it is still counting the parent...Is my best option is to post processing the result to have the right one?
medini_1053080245
I have partially found a solution by creating a profiled column in the DC worksheet to know when there are no nested parts: if self.children->size() > 0
then true
else false
endif To display only failure rate when no nested part if (self.user_isnested == false){
self.failureRate
}else{
//do nothing
} It works. But now, when I want to create at DC worksheet level, a sum of relevant failure rate (to get the right total failure without the nested parts), I cannot find how to fix this error that is given by the following code: self.components.oclAsType(dc::DCComponentEntry)->iterate(c : dc::DCComponentEntry; sum:Real=0 | c.user_relevant_failure_rate)
medini_1023909254
Hi Romain, one point concerning the "Total Failure Rate" as shown in the metrics section: This number is not used by medini in any calculations of the SPFM/LFM. It is in fact just summing-up in a flat manner all failure rates which are included according to the analysis depth settings. So in case you have metrics at level leaves, it would also just show the sum of the failure rates of the lowest level elements. For the metrics it will in any case only use the values from "Total Safety Related" - so best would be to ignore the Total Failure Rate". Unfortunately this does not work in the same way for ports as they are not considered to be "children" of a component (as leaves) but rather are shown when the component is shown too. For that reason we recommend to model things with ports and sub-components as shown below (and to avoid to set a lot of things manually to "Not Safety Related"): And yes, there are cases where you mix different methods to determine the failure rate prediction methods (i.e. percentage of parent, sum of children and sum of failure modes) - but in that case the user has to take care to decide (by level selection and/or marking as safety related), what shall be included in the SPFM/LFM metrics calculation. Anyway, concerning your scripting question - we do provide also at the download location the PMHF approximation script, which does quite good explain, how to access the right data in a DC Worksheet - just see the snippet below, which determines the dual point latent and dual point detected failure rates for all components of consideration var lambda_dpf_detected = ZERO;
var lambda_dpf_latent = ZERO;
worksheet.components.toArray().forEach(function (c) {
if(worksheet.hidePorts && c.element.prototype == Metamodel.sysml.SysMLPortUsage)
{
//skip ports if hide-ports option is active
}
else
{
if(( worksheet.analysisDepth == -1 && (c.children.isEmpty() || !containsType(c.element.the_owned_elements, Metamodel.sysml.SysMLPart))
// Metrics at Level leave incl. ports of leave elements
|| worksheet.analysisDepth == 0 && !worksheet.restrictAnalysisDepth // Metrics at Level all
|| worksheet.restrictAnalysisDepth && ((worksheet.analysisDepth == c.nestingLevel +1) || (c.element.prototype == Metamodel.sysml.SysMLPortUsage && worksheet.analysisDepth == c.nestingLevel))
)
// Metrics at Level x incl. ports of components at that level
&&
(c.safetyRelated || !c.safetyRelatedFor.isEmpty() && c.safetyRelatedFor.contains(goal)) //Only when completely safety related or safety related for concerned goal
&&
(c.applicableFor.isEmpty() || c.applicableFor.contains(variant)) //Only when for all variants or for the variant of concern
)
{
lambda_dpf_latent = lambda_dpf_latent.add(getDPFofComponent(c, goal, variant), PRECISION);
lambda_dpf_detected = lambda_dpf_detected.add(getDPF_detected_ofComponent(c, goal, variant), PRECISION);
}
}
}); Zero and Precision are defined as follows: var PRECISION = java.math.MathContext(12);
var ZERO = java.math.BigDecimal("0",PRECISION);
var toFIT = 1000000000; You may adjust it accordingly in line 20/21 to calculate also other values. Eckhardt
Quick Links
All Categories
Recent Posts
Activity
Unanswered
Groups
Help
Best Of