Analysis Solution |
Analysis Modeler |
Frequently Asked Questions |
Quick Reference |
AbstractHere is a quick-access list of all the F.A.Q.'s we have received from CAA partners as well as DS internal developers. In answers, links to the relevant documents or use cases are provided for a more detailed information.
|
In order to help the programming, we provide some debug variables. It is recommended to use them for programming but not to deliver them with your applicative product. Also, do not use them during performances tests.
When programming with the CATAnalysisExplicitObjects, we work with Object and no pointers. In order to manage several objects, the ExplicitList or ExplicitListUsr can be used. If an ExplicitCharac may receive as values another object, the SetValue/GetValue methods use CATSamExplicitPtr. Any Field model object derive from the CATAnalysisExplicitData Class. To get the pointer use the GetPointer method, to build and object use LinkWithPointer method.
... Here is the sample of code I use to obtain the CATSamExplicitPtr : //----------------------------------------------------------- CATSamExplicitPtr AxisPtr = NULL; CATAnalysisExplicitAxis Axis; CATAnalysisExplicitChild Child = *(ChildrenList.First()); while(Child!=NULL_exp) { if (Child.GetType() == CATSamDataTypeCharac) { CATAnalysisExplicitCharac CharacAxis = Child ; CATSamValue ValueType; hr = CharacAxis.GetValueType(ValueType); if (SUCCEDDED(hr) && ValueType == CATSamValueAxis) { hr = CharacAxis.GetValues(AxisPtr); if (SUCCEDDED(hr)) { Axis.LinkWithPointer (AxisPtr,pExplicitModel); break} } } Child = *(ChildrenList.Next()); } ... Note that the pointer on the CATAnalysisExplicitModel, if you do not have it from previous lines is retrieved with: CATAnalysisExplicitModel *pExplicitModel = ChildrenList.GetModel(); |
[Top]
The chapter describes also the way values must be stored in CATAnalysisExplicitCharac object.
As long as your tensor dimension is lesser or equal to three, the figure
shows the way the values have to be put in the values of the CATAnalysisCharacCollector
or the CATAnalysisExplicitCharac.
The same order needs to be used for Principal or symmetrical tensors. |
|
For tensor with highest dimension, see the associated figure that
illustrates a 6x6 tensor.
Three cases are illustrated here:
|
[Top]
Before R11 this header was exported by the "SAMWorkshop", so you just had to insert it in your toolbar. It is no more the case. Now, you have to create your own header for accessing the generic command as follow:
new MyCommandHeader ("xxxxxxxxxxxx","CATAV0UI" ,"CATSPMGenerateImageCmd",(void *) NULL ); |
Some changes allows now to be completely independent of DASSAULT SYSTEMES libraries and commands names. For this, refer to the associated reference.
[Top]
This functionality impacts also the collect of the data that use the CATAnalysisCharacCollector object. The impacts are located in the CATSamDimention class. This object have to manage the "repeat" information not only per position and SMI (as before Release 15), but also per Position, per Lamina and per SMI. It means, for one physical type of characteristics, that you can retrieve several values for each combining of Position, Lamina and SMI.
Before V5 Release 11, it was possible to define in the field model a physical characteristic on an Finite Element Face. But, for thermal loading applied on shell elements (for example), it makes sense to define such a temperature at on three intermediate positions: Superior face, Middle of the thickness and Inferior face. If not specified, the solver may assume that the temperature is constant inside the element.
To support this at the level of the processing data, the ApplyTo methods of the CATAnalysisExplicitEntity have been completed with some arguments.
CATAnalysisExplicitEntity::ApplyTo( | int | iNumber, |
const CATSamExplicitPtr* | iApplyTo, | |
CATSamPosition | iApplyPosition, | |
const int* | iApplyNumber, | |
const CATSamApplyQualifier* | iApplyQualifier= NULL) |
The optional CATSamApplyQualifier enumerate allow to customize the apply type with specific behavior. By using it your are able to specify a loading on the same face number of an element with two sub positions. The enumerate is also used to define the number of the position on which the data are applied.
[Top]
This functionality impacts also the collect of the data that use the CATAnalysisCharacCollector object. The impact are located in the CATSamDimention class. This object have to manage the "repeat" information not only per position and SMI (as before Release 15), but also per Position, per Lamina and per SMI. It means, for one physical type of characteristics, that you can retrieve several values for each combining of Position, Lamina and SMI.
Let's take an example:
In the case of a four node shell element on which is applied two loadings
defined at the node of the elements. Suppose the first loading (LOAD 0) is apply on the
two first nodes and the last one of the upper face and the second one (LOAD 1) is
applied on the two first nodes of both upper and lower faces. We will also suppose that
this loading have two components and the finite element have only one lamina.
When collecting this physical type, associated dimension will looks like:
Assume the loading position are named P0 for Node 1 (N1), P1 for Node2 (N2) and P2 for Node4 (N4) , the single Lamina is called L0, and the SMI loaded are called S0 (For Upper face) and S1 for the lower face. you will retrieve the following repeat values per Position, Lamina and SMI.
|
To create the associated dimension, when implementing the CATICharacCollector interface, the data of the dimension can be setup at the level of the constructor or later with the fill method. For the example:
This dimension is now ready to be stored in a Charac-Collector.
[Top]
Two ways can be noted to extract the data.
... for iLam = 0 -> DimensionPointeur->GetNbLamina() -1 for iSMI = 0 -> DimensionPointeur->GetNbSMI() -1 for iPos = 0 -> DimensionPointeur->GetNbPosition() -1 for iRepeat = 0 -> DimensionPointeur->GetNbRepeat(iPos, iLam , iSMI) Note that Lamina as index is added in R15 Release. ValPtr = DimensionPointeur -> ValuesAdress(ValuesPointeur, iPos, iLam, iSMI, iRepeat) FOR iComp = 0 -> DimensionPointeur->GetNbComponents() -1 cout <<" my value = " << ValPtr[i]; ... |
This way of programming is the only stable method because it gives a guaranty to access effectively all the values indexes, whatever the way the data are defined for a charac-collector.
Note that some methods supported until Release 10 are now deprecated and replaced by new ones. They correspond to all methods that were not able to support variable SMI. These methods will remain for two versions, they are programmed by using the new ones with the SMI index set to zero (the first one). The pointer of access is valid but only one SMI information is seen. It is mandatory to migrate on the new set of methods.
[Top]
The CATAnalysisExplicitTopology object is the central object that will allow to access all the information's related to the meshing. Before V5 Release 13, it was possible to use the CATAnalysisExplicitTopology constructor. When using this constructor, all the internal data were never released. Also, any changes that may happen on the mesh were not propagated in this new version of the topology.
To avoid those problem, the constructor is now private. To get access to the CATAnalysisExplicitTopology use CATAnalysisExplicitModel::GetExplicitTopology. Preparing new enhancements related to assembly of analysis, the Explicit Topology supports now an AddRef/Release mechanism. So the CATAnalysisExplicitModel::GetExplicitTopology increase the life cycle counter of this object and you have to release it. For assembly of the topologies, some internal data members are shared (for memory consumption reduction), for this an Addref /Release is mandatory.
[Top]
A new implementation of the Field model has been delivered in V5R14. Objectives of this action was memory consumption and performances. The previous implementation was based on list of chained objects by physical types. Those list were visible at programming level by using GetMemberList and FindData methods. Because of the new implementation, the lists do not exist anymore. Because of CAA compatibility the API is deprecated for V5R14 but the lists are now allocated on demand by scanning the complete field model. So performances of creation and search will be slower. Try to remove those API from your programming. Field model objects should be retrieved from their parent that is associated by a feature (for this use CATISamExplicit::GetExplicitObjects) and use the CATAnalysisExplicitParent::GetChildrenList to scan the associated children's.
In any case, the methods defined on the CATAnalysisExplicitModel class will be removed 2 releases after V5R14.
[Top]
Some changes as been introduced in release R14 concerning meshing algorithms. This can impact, from a programming point of view, the Update and Remove tasks or "Empty Mesh" contextual menu. The following schema will describe the way it's work. It describe the different steps and where you can introduce some applicative software.
Update In the new additional call of CATISamExplicitation, you can add some applicative software. Take care, that now an explicitation of an empty meshpart is no more an error, is this case you have to Create the set with physical type MESHSET, out it in the oNewExplicitList and call the UpdateExplicitList method. |
|
MeshPart Life Cycle In the new additional call of CATISamAnalysisSetInit, you can add some applicative software. |
|
"Empty Mesh" In the new additional call of CATISamExplicitation, you can add some applicative software. |
In order to avoid any mismatch between finite element modifications (Elements creation or deletion) and the corresponding features modifications (Mesh Parts and Mesh Operators) we are going to put in place more severe controls when performing some operations. This rule are activated in V5R15.
This rule will impact the following tasks:
As summary, the way of creating, deleting and modifying meshing entities must be limited into:
[Top]
This functionality completes the enhancement related to the dimension class started in V5R11. It impacts also the collect of the data that use the CATAnalysisCharacCollector object. The objective is to provide a generic way to describe that the values of a characteristic are variable. In fact, they can be variable inside an element (for example, on lamina or predefined position) or they can be variable per element. Before release R15, for the second point, you can use a negative repeat to have values per elements. We have enhanced the SetDefinition method of CATAnalysisExplicitCharac . See the appropriate enumerate: CATSamValuesDistributionMode. In order to apply at specific position inside a finite element, you can use:
Note that a negative repeat is supported for 2 releases after V5R15 but must be replaced as soon as possible by a positive repeat and a distribution mode set to "CATSamValuesDistributionModeDistributed". This means that values are distributed per apply.
[Top]
Suppose you have an analysis document with instances of CAA analysis feature StartUp, and you send this document to a supplier. In most cases, your suppliers do not have the code (dll) and StartUp's catalog which would enable them to find the behaviors that you defined on your CAA features. Your document is quiet useless in this context.
The proposed (called backup StartUp) allows to provide a minimum of behaviors when the CAA feature is used without its CATfct file. It informs you that installation is partial and some operation like edition or update are secured.
[Top]
Version: 1 [June 2002] | Document created |
Version: 2 [Dec 2004] | Release 15. |
[Top] |
Copyright © 2002, Dassault Systèmes. All rights reserved.