Je travaille beaucoup avec Abaqus CAE / Standard!
Chaque fois que j'ai essayé de placer un nombre supérieur à 15 sous le mot clé * Depvar (et qu'il peut exister des sous-routines (UMAT ou USDFLD) sans codage , uniquement les paramètres de base fournis par Abaqus User Subroutine Guide), le travail toujours, sans faute, avorte immédiatement et me donne l'erreur: "Référence de mémoire illégale (signal 11)".
Gardez à l'esprit qu'il n'y a pas de code réel dans le sous-programme utilisateur où il pourrait y avoir une erreur; J'ai essayé cela juste comme une curiosité, et juste comme prévu, dès que le nombre de variable dépendante est supérieur à 15, ça avorte tout de suite !!!
Quelle est la cause de cela?
Réponses:
Ils utilisent probablement un nibble (un demi octet ou 4 bits) pour représenter le compteur qui représente cette valeur. La plus grande valeur non signée qu'un quartet peut représenter est 15, avec une plage de 0 à 15.
Il y a probablement une logique en place pour générer l'erreur que vous avez mentionnée chaque fois que vous essayez d'utiliser une valeur dépassant cette plage. Une simple
if(0xF0 & num_states)
vérification suffit pour détecter une valeur supérieure à 15.Et bien que je ne puisse pas commenter le raisonnement utilisé par les développeurs Abaqus, les amuse-gueules sont généralement utilisés lorsque:
la source
99,9% du signal de temps 11 signifie qu'il y a un bogue dans le programme. Donc, dans ce cas, vous avez un bogue qui n'est déclenché que lorsque cette variable est supérieure à 15. Restez sous 15 ans ou demandez au vendeur de le réparer.
la source