Как получить общее количество приращений в подпрограмме Disp в ABAQUS

Я использую подпрограмму Disp в ABAQUS. Я хочу применить конкретное граничное условие к моей модели. Это часть моего кода:

  IF (NODE==mst(2,1)) THEN
     IF (JDOF .EQ. 1) THEN
       U(1)=0.01
     ELSE IF (JDOF .EQ. 2) THEN
       U(1)=0
     ELSE
       U(1)=0
     END IF
  END IF

Проблема в том, что я не знаю, сколько инцементов использует ABAQUS для решения модели. Таким образом, я не знаю, как изменить значение «U(1)=0,01» на его инкрементное. Я знаю, что "KINC" дает текущий номер приращения. Однако я не знаю, как получить общее количество приращений. Кроме того, есть ли необходимость изменить значение на инкрементное или ABAQUS сделает это автоматически?


person RKM    schedule 23.01.2019    source источник


Ответы (1)


Общее количество приращений неизвестно априори, если вы его не укажете (т.е. если у него есть проблемы со схождением, он уменьшит размер шага и, таким образом, увеличит номер шага). Вы можете использовать ВРЕМЯ (1) и ВРЕМЯ (2), чтобы узнать текущее значение времени шага и переформулировать свою нагрузку на основе этого, что я думаю, это то, что вы ищете.

Для второго вопроса Abaqus вычислит приращение автоматически или будет следовать указанному в зависимости от заданных вами настроек решателя. Есть несколько пользовательских подпрограмм, которые могут управлять размером приращения, но DISP не входит в их число.

person Miguel    schedule 28.01.2019
comment
Уважаемый Мигель, Спасибо за ваш ответ. Мой вопрос: мне нужно установить окончательное значение U_x (1) равным 0,01. В случае, если ABAQUS требуется более одного приращения для решения моей симуляции, как я могу изменить значение U_x(1) на его приращение? Или ABAQUS сделает это автоматически и поймет, что U_x(1)=0,01 — это конечное значение? - person RKM; 30.01.2019
comment
U(1) — полное значение заданной переменной в этой точке. Поэтому, если смещение изменяется от нуля до вашей амплитуды, вы можете просто сделать его пропорциональным текущему времени шага TIME(1). U(...) = 0,01 * ВРЕМЯ(1) Это означает, что для времени шага = 1 ваша точка будет иметь смещение 0,01, увеличивающееся линейно. - person Miguel; 31.01.2019
comment
Это именно то, что я искал. Спасибо. Не могли бы вы сказать мне, следует ли мне изменить значение U(1) в DISP на его инкрементное значение? Если ABAQUS требуется более одного инкремента для выполнения этой симуляции, при каждом инкременте он пытается применить окончательное значение У(1)? - person RKM; 01.02.2019
comment
Это должно быть общее значение, а не приращение. Если ему нужно больше приращений, он вызовет вашу подпрограмму с соответствующим временным шагом. - person Miguel; 02.02.2019