| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > ANSYS > Работа с APDL Math. Почему Команда *dmat при параметре outofcore не отдаёт массив ?

Работа с APDL Math. Почему Команда *dmat при параметре outofcore не отдаёт массив ?

Ответ
Поиск в этой теме
Непрочитано 29.05.2015, 03:37 #1
Работа с APDL Math. Почему Команда *dmat при параметре outofcore не отдаёт массив ?
Stanum
 
Dr
 
Днепропетровск
Регистрация: 16.10.2011
Сообщений: 1,020

собственно проблема:
Работаю с массивами больших размеров. Хочу для экономии памяти перегнать массив в sparse формат. Для этого сначала создаю массив при помощи *dmat.
Так как массив может быть очень большим создаю его outofcore.

В итоге не могу вернуть в Ansys ни сам массив не результаты его обработки.

При использовании параметра команды incore всё работает, подскажите что я делаю не так.

Код:
[Выделить все]
 
*DMAT, test1, d, ALLOC, 10, 10, inCORE
*DMAT, test1_1, d, ALLOC, 10, 10, outofCORE
*do,i,1,10
	test1(i, i)=1
	test1_1(i, i)=test1(i, i)
*enddo
*EXPORT, test1_1, mmf, topology5_test11
*EXPORT, test1, mmf, topology5_test1
*EXPORT, test1, apdl, test01, 1, 10
*EXPORT, test1_1, apdl, test01_1, 1, 10
Просмотров: 2794
 
Непрочитано 29.05.2015, 09:56
#2
MrWhite


 
Регистрация: 18.09.2011
Нахабино
Сообщений: 1,040


В хелпе по *EXPORT написано, что команда не работает с разреженными матрицами. Судя по всему *DMAT с функцией OUTofCORE эквивалентна *SMAT.
Если Вы работаете с большими (очень большими) массивами, то зачем перегонять в ARRAY? Вы пробовали ARRAY огромных размеров? Скорость работы с ними очень зависит от их размерности.

Если уж прямо вот необходимо, то как вариант (медленный и некрасивый) обратная конструкция. Т.е. Вы сейчас по каждой ячейке заполняете матрицу, так же можно делать и с ARRAY. Можно для ускорения на Fortran функцию запилить, но прежде все-таки расскажите зачем Вам финальный ARRAY.

P.S. Все разобрался.. попробуйте сделать ARRAY большой размерности, ну скажем 1e6 на 1e6 и все поймете

Последний раз редактировалось MrWhite, 29.05.2015 в 10:06.
MrWhite вне форума  
 
Автор темы   Непрочитано 29.05.2015, 10:42
#3
Stanum

Dr
 
Регистрация: 16.10.2011
Днепропетровск
Сообщений: 1,020
<phrase 1=


MrWhite, да матрица большая будет размер матрицы равен количество элементов х количество элементов.
Перегоняют обратно в array так как в эту матрицу я записываю коэффициенты чувствительности, которые считаю Один раз в начале задачи, но потом в процессе решения я часто буду умножать матрицу sparse на вектор и в итоге получать вектор(вектор в памяти помещается). И именно этот вектор мне нужен. В процессе тестирования функции я обнаружил, что если первый dmat идет вне памяти, то я не могу экспортировать финальный array он получается размером 0х1.
В сущности мне нужна матрица в которой будут такие числа, если расстояние между I элементом и y элементом меньше r_min, то это расстояние/ r_min, если больше 0. Дальше эти коэффициенты будут умножаться на вектор (кол элем ) со значениями параметров которые необходимо будет отфильтровать. И таким образом я снова получу вектор длиной равной количеству элементов.
Данная операция будет происходить в цикле (только само умножение вектор чувствительности считаю один раз за циклом)
Умножить матрицу sparse можно только на матрицу dense или вектор созданный таким же образом, по крайней мере умножить ее на array мне не удалось.
P.s. Такой большой даже смысла делать нет, он будет весить порядка 40 гб. Поэтому и хочу чтоб это была sparse матрица, но ansys собирает sparse новые матрицы только из dense ( не нашел другого пути).

Проблема еще и в том что по идее sparse матрицу можно экспортировать в asciI формате, dense s outofcore не дает этого сделать.
Stanum вне форума  
 
Непрочитано 29.05.2015, 10:58
#4
MrWhite


 
Регистрация: 18.09.2011
Нахабино
Сообщений: 1,040


Если в ARRAY нужно занести только финальный вектор (я правильно понял?), то рекомендую не усложнять и без того сложную задачу. Просто создайте ARRAY нужной размерности и занесите в него значения вектора.
Если я понял неправильно, тогда уже можно по кусочкам кода разбираться, потому что на слух - тяжело

Про размерность ARRAY 1e6 на 1e6 я написал исключительно в виду иллюстрации того почему разработчики не сделали экспорт разреженных матриц в ARRAY
MrWhite вне форума  
 
Автор темы   Непрочитано 29.05.2015, 11:42
#5
Stanum

Dr
 
Регистрация: 16.10.2011
Днепропетровск
Сообщений: 1,020
<phrase 1=


MrWhite, так и хочу просто тут заковыка вот в чем:
http://www.topopt.dtu.dk/files/TopOpt88.pdf работаю на основе этой статьи.

Суть задачи: всем элементам присваивается условная плотность, на каждой итерации она изменяется для каждого элемента в зависимости от его вклада в энергию деформирования системы. Для того чтоб избежать шашечных решений производится фильтр параметров: учет влияния значений соседних ячеек в зоне r_min на элемент

Код:
[Выделить все]
 
*GET, elem_count, ELEM, 0, count
*dim, e_num_vec, array, elem_count, 1
*VGET, e_num_vec, ELEM, ,ELIST
*DMAT, H_e, d, alloc, elem_count, elem_count, OUTOFCORE, 

*dim, H_e_sum, array, elem_count, 1
*do,i, 1,elem_count
	x_coord_i=CENTRX(e_num_vec(i))
	y_coord_i=CENTRY(e_num_vec(i))
	z_coord_i=CENTRZ(e_num_vec(i))	
	*do,j, i,elem_count
		
		x_coord_j=CENTRX(e_num_vec(j))
		y_coord_j=CENTRY(e_num_vec(j))
		z_coord_j=CENTRZ(e_num_vec(j))
		x_dist=x_coord_i-x_coord_j
		y_dist=y_coord_i-y_coord_j
		z_dist=z_coord_i-z_coord_j
		cent_dist=(x_dist**2+y_dist**2+z_dist**2)**(1/2)
		H_e_trial=max(r_min-cent_dist,0)
		H_e(i, j)=H_e_trial
		H_e(j, i)=H_e_trial
		
	*enddo
*enddo

*sMAT, H_e_s, d, copy, H_e
*VEC, x_eT, d, IMPORT, apdl, x_e
*VEC, x_ef, d, alloc, 10, 
*MULT, H_e_s, , x_eT, , x_ef
*EXPORT, x_ef, apdl, x_e_f, 1, 1
Stanum вне форума  
 
Непрочитано 29.05.2015, 12:07
#6
MrWhite


 
Регистрация: 18.09.2011
Нахабино
Сообщений: 1,040


Ага понятнее стало. И на каком этапе проблема в этом куске макроса? Я просто не могу его выполнить из-за вектора x_eT (строчка 28), до этого вроде все нормально.
MrWhite вне форума  
 
Автор темы   Непрочитано 29.05.2015, 12:12
#7
Stanum

Dr
 
Регистрация: 16.10.2011
Днепропетровск
Сообщений: 1,020
<phrase 1=


на экспорте x_ef.
вот более полный кусок, только здесь элементов мало, для отладки.
Код:
[Выделить все]
 

finish
/CLEAR,NOSTART  
/units, si
/filname, topology5
/title, topology5
/OUTPUT, topology_5, txt, , D:\ANSYS files
/PREP7  

!!!!!!!!!!!!!!!!size_data!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

a=5
b=2.5
c=4

!!!!!!!!!!!!!!!!size_data_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!topo_opt_data!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

eror=1e-3
Vol_frac=0.3
r_min=2
p=3
lambda_1_0=1e-9
lambda_2_0=1e9
step=0.2
eta=0.5

!!!!!!!!!!!!!!!!topo_opt_data_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!material_data!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

nus=0.3   												! коэффициент пуассона   
Es_min=1
Es_0=210e9   												!модуль упругости , (Г)Па  
Es_t=Es_0-Es_min
D_otn=Es_min/Es_t

!!!!!!!!!!!!!!!!material_data_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!element_type_assignment!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ET,1,186               

!!!!!!!!!!!!!!!!element_type_assignment_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!material_properties_assignment!!!!!!!!!!!!!!!!!!!!!!!!!

!MP,EX,1,Es      ! Linear isotropic, material	
MP, EX, 1, Es_min, Es_t,
MP,NUXY,1,nus
MP,reft,1,0

!!!!!!!!!!!!!!!!material_properties_assignment_end!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!geometry_creation!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

block,	0,		a,		0,		b,		0,		c
alls

!!!!!!!!!!!!!!!!geometry_creation_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!meshing!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ESIZE,0.2             ! Use a relatively fine mesh density
TYPE, 1
MSHAPE,0,3d 
MSHKEY,1
VMESH,all            

!!!!!!!!!!!!!!!!meshing_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!boundary_conditions_assignment!!!!!!!!!!!!!!!!!!!!!!!!!

aSEL, S, LOC, y,	0
Da,ALL,ALL,0
alls

!!!!!!!!!!!!!!!!boundary_conditions_assignment_end!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!load_assignment!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

asel, s, loc, y, b
sFa,ALL, ,pres, 500
alls

!!!!!!!!!!!!!!!!load_assignment_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 


!!!!!!!!!!!!!!!!topology_optimisation_set_up!!!!!!!!!!!!!!!!!!!!!!!!!!! 

*GET, elem_count, ELEM, 0, count
*dim, e_num_vec, array, elem_count, 1
*VGET, e_num_vec, ELEM, ,ELIST
*dim, compl_e,array, elem_count
*dim, d_compl_e,array, elem_count

*dim, promej,array, elem_count

*dim, V_e,array, elem_count
*VGET, V_e, ELEM, , geom, 

*dim, B_e, array, elem_count
*dim, B_e_eta, array, elem_count

*dim, x_e_step_plus, array, elem_count, 1
*dim, x_e_step_minus, array, elem_count, 1

*dim, change_1, array, elem_count, 1

alls
*dim,x_e_vrem,array,elem_count
*dim, x_e, array, elem_count, 1
*VOPER, x_e(1), x_e(1), add, Vol_frac

*dim, odin_transp, array, 1, elem_count
*dim, x_e_sum, array, 1, 1
*do,i,1,elem_count
	odin_transp(1,i)=1
*enddo

*dim, lambda, array, 1000
*dim, f_x_e_sum, array,1000
*dim, d_f_x_e_sum, array,1000

!!!!!!!!!!!!!!!!topology_optimisation_set_up_end!!!!!!!!!!!!!!!!!!!!!!! 

*DMAT, H_e, d, alloc, elem_count, elem_count, OUTOFCORE, 

*dim, H_e_sum, array, elem_count, 1
*do,i, 1,elem_count
	x_coord_i=CENTRX(e_num_vec(i))
	y_coord_i=CENTRY(e_num_vec(i))
	z_coord_i=CENTRZ(e_num_vec(i))	
	*do,j, i,elem_count
		
		x_coord_j=CENTRX(e_num_vec(j))
		y_coord_j=CENTRY(e_num_vec(j))
		z_coord_j=CENTRZ(e_num_vec(j))
		x_dist=x_coord_i-x_coord_j
		y_dist=y_coord_i-y_coord_j
		z_dist=z_coord_i-z_coord_j
		cent_dist=(x_dist**2+y_dist**2+z_dist**2)**(1/2)
		H_e_trial=max(r_min-cent_dist,0)
		H_e(i, j)=H_e_trial
		H_e(j, i)=H_e_trial
		
	*enddo
*enddo

*sMAT, H_e_s, d, copy, H_e
*VEC, x_eT, d, IMPORT, apdl, x_e
*VEC, x_ef, d, alloc, elem_count, 
*MULT, H_e_s, , x_eT, , x_ef
*EXPORT, x_ef, apdl, x_e_f, 1, 1


*do,i, 1,elem_count
	*do,j, i,elem_count
		H_e_sum(i)=H_e(i, j)+H_e_sum(i)
	*enddo
*enddo

Последний раз редактировалось Stanum, 29.05.2015 в 12:26.
Stanum вне форума  
 
Непрочитано 29.05.2015, 12:15
#8
MrWhite


 
Регистрация: 18.09.2011
Нахабино
Сообщений: 1,040


Вообще погодите, у меня вот этот кусок не работает: *sMAT, H_e_s, d, copy, H_e
Выполняется, но по факту матрица не копируется. Это нормально? И вообще зачем H_e_s, по хелпу и с H_e должно работать нет?
MrWhite вне форума  
 
Автор темы   Непрочитано 29.05.2015, 12:19
#9
Stanum

Dr
 
Регистрация: 16.10.2011
Днепропетровск
Сообщений: 1,020
<phrase 1=


MrWhite, я просто хочу потом это h_e удалить, чтоб не работать с большим по весу файлом. В идеале первый проход просто экспортирует в файл sparse матрицу затем чищу всю память и работаю с уже созданной матрицей.
а вот с incore копирует. здесь и проблема мне кажется.
там ещё была опечатка:

сейчас чётко видно разницу:

Код:
[Выделить все]
 

finish
/CLEAR,NOSTART  
/units, si
/filname, topology5
/title, topology5
/OUTPUT, topology_5, txt, , D:\ANSYS files
/PREP7  

!!!!!!!!!!!!!!!!size_data!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

a=5
b=2.5
c=4

!!!!!!!!!!!!!!!!size_data_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!topo_opt_data!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

eror=1e-3
Vol_frac=0.3
r_min=2
p=3
lambda_1_0=1e-9
lambda_2_0=1e9
step=0.2
eta=0.5

!!!!!!!!!!!!!!!!topo_opt_data_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!material_data!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

nus=0.3   												! коэффициент пуассона   
Es_min=1
Es_0=210e9   												!модуль упругости , (Г)Па  
Es_t=Es_0-Es_min
D_otn=Es_min/Es_t

!!!!!!!!!!!!!!!!material_data_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!element_type_assignment!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ET,1,186               

!!!!!!!!!!!!!!!!element_type_assignment_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!material_properties_assignment!!!!!!!!!!!!!!!!!!!!!!!!!

!MP,EX,1,Es      ! Linear isotropic, material	
MP, EX, 1, Es_min, Es_t,
MP,NUXY,1,nus
MP,reft,1,0

!!!!!!!!!!!!!!!!material_properties_assignment_end!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!geometry_creation!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

block,	0,		a,		0,		b,		0,		c
alls

!!!!!!!!!!!!!!!!geometry_creation_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!meshing!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ESIZE,1             ! Use a relatively fine mesh density
TYPE, 1
MSHAPE,0,3d 
MSHKEY,1
VMESH,all            

!!!!!!!!!!!!!!!!meshing_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!boundary_conditions_assignment!!!!!!!!!!!!!!!!!!!!!!!!!

aSEL, S, LOC, y,	0
Da,ALL,ALL,0
alls

!!!!!!!!!!!!!!!!boundary_conditions_assignment_end!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!load_assignment!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

asel, s, loc, y, b
sFa,ALL, ,pres, 500
alls

!!!!!!!!!!!!!!!!load_assignment_end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 


!!!!!!!!!!!!!!!!topology_optimisation_set_up!!!!!!!!!!!!!!!!!!!!!!!!!!! 

*GET, elem_count, ELEM, 0, count
*dim, e_num_vec, array, elem_count, 1
*VGET, e_num_vec, ELEM, ,ELIST
*dim, compl_e,array, elem_count
*dim, d_compl_e,array, elem_count

*dim, promej,array, elem_count

*dim, V_e,array, elem_count
*VGET, V_e, ELEM, , geom, 

*dim, B_e, array, elem_count
*dim, B_e_eta, array, elem_count

*dim, x_e_step_plus, array, elem_count, 1
*dim, x_e_step_minus, array, elem_count, 1

*dim, change_1, array, elem_count, 1

alls
*dim,x_e_vrem,array,elem_count
*dim, x_e, array, elem_count, 1
*VOPER, x_e(1), x_e(1), add, Vol_frac

*dim, odin_transp, array, 1, elem_count
*dim, x_e_sum, array, 1, 1
*do,i,1,elem_count
	odin_transp(1,i)=1
*enddo

*dim, lambda, array, 1000
*dim, f_x_e_sum, array,1000
*dim, d_f_x_e_sum, array,1000

!!!!!!!!!!!!!!!!topology_optimisation_set_up_end!!!!!!!!!!!!!!!!!!!!!!! 

*DMAT, H_e, d, alloc, elem_count, elem_count, outofCORE, 
*DMAT, H_e1, d, alloc, elem_count, elem_count, inCORE, 
*dim, H_e_sum, array, elem_count, 1
*do,i, 1,elem_count
	x_coord_i=CENTRX(e_num_vec(i))
	y_coord_i=CENTRY(e_num_vec(i))
	z_coord_i=CENTRZ(e_num_vec(i))	
	*do,j, i,elem_count
		
		x_coord_j=CENTRX(e_num_vec(j))
		y_coord_j=CENTRY(e_num_vec(j))
		z_coord_j=CENTRZ(e_num_vec(j))
		x_dist=x_coord_i-x_coord_j
		y_dist=y_coord_i-y_coord_j
		z_dist=z_coord_i-z_coord_j
		cent_dist=(x_dist**2+y_dist**2+z_dist**2)**(1/2)
		H_e_trial=max(r_min-cent_dist,0)
		H_e(i, j)=H_e_trial
		H_e(j, i)=H_e_trial
		H_e1(i, j)=H_e_trial
		H_e1(j, i)=H_e_trial
	*enddo
*enddo

*sMAT, H_e_s, d, copy, H_e
*VEC, x_eT, d, IMPORT, apdl, x_e
*VEC, x_ef, d, alloc, elem_count, 
*MULT, H_e_s, , x_eT, , x_ef
*EXPORT, x_ef, apdl, x_e_f, 1, 1

*sMAT, H_e_s1, d, copy, H_e1
*VEC, x_ef1, d, alloc, elem_count, 
*MULT, H_e_s1, , x_eT, , x_ef1
*EXPORT, x_ef1, apdl, x_e_f1, 1, 1

*do,i, 1,elem_count
	*do,j, i,elem_count
		H_e_sum(i)=H_e(i, j)+H_e_sum(i)
	*enddo
*enddo


Последний раз редактировалось Stanum, 29.05.2015 в 12:33.
Stanum вне форума  
 
Непрочитано 29.05.2015, 13:08
#10
MrWhite


 
Регистрация: 18.09.2011
Нахабино
Сообщений: 1,040


Да.. есть такое. Если операция *MULT обращается к матрице созданной OUTOFCORE, то ANSYS падает с характерной ошибкой. По деталям не могу сказать, но судя по всему нарушаются принципы обращения к памяти этого оператора (*MULT), по этой же причине не работает создание разреженной матрицы командой *SMAT, но там видимо прописан обработчик и вместо падения создается матрица нулевого размера.
Думаю это неразрешимая проблема. Придется искать другие пути решения.

P.S. Задача очень интересная, жаль мне не приходится с такими сталкиваться в работе..

P.P.S. Кстати чудовищно долго ищется H_e_trial. Учитывая, что там цикл в цикле по количеству конечных элементов, думаю вопрос с матрицами на серьезной размерности задачи выйдет на второй план. С этим как думаете бороться?

Последний раз редактировалось MrWhite, 29.05.2015 в 13:14.
MrWhite вне форума  
 
Автор темы   Непрочитано 29.05.2015, 14:57
#11
Stanum

Dr
 
Регистрация: 16.10.2011
Днепропетровск
Сообщений: 1,020
<phrase 1=


MrWhite, пока еще не думал, но основная задумка, что данную величину считаю всего раз, и на больших задачах та часть макроса что высчитывает x_e будет все-же больше. ( и там цикл каждый раз уменьшающийся)
В сущности н_е trial можно получить и матричными операциями, но в итоге опять же столкнусь с матрицей гигантского размера. Пока пришел к выводу, что модели из solid, Да и из мелких плоских элементов, придется связывать с маткад. (Буду выводить координаты центров элементов, и кое что про объем/площадь элементов, чтоб там уже собрать sparse матрицу, вывести ее из маткад, и подсоединить к Ansys.
P.s *print, выдает матрицу полученную и тем и другим способом.

Последний раз редактировалось Stanum, 29.05.2015 в 15:02.
Stanum вне форума  
 
Непрочитано 29.05.2015, 15:29
#12
MrWhite


 
Регистрация: 18.09.2011
Нахабино
Сообщений: 1,040


Я бы на фортране или С++ написал бы функцию которая всю эту процедуру делает. Собственно из более менее сложного - это матричные операции, но они в и С++ и в фортране сторонними библиотеками реализованы.
Кстати, точно необходимо использовать ключ OUTOFCORE? Ansys вроде достаточно корректно работает с памятью, по идее должно хватать ее для запихивания матрицы. Вообщем пробовали определить при каком количестве КЭ у вас будут проблемы? А то может все проще, чем Вы думаете?
MrWhite вне форума  
 
Автор темы   Непрочитано 29.05.2015, 16:07
#13
Stanum

Dr
 
Регистрация: 16.10.2011
Днепропетровск
Сообщений: 1,020
<phrase 1=


MrWhite, при шаге разбиения 0.1 это порядка 50000 элементов. Моих 20 гб выделенных ansys не хватило. И он вылетел с ошибкой. А поскольку это только тестовая задача. Результат будет на значительно большей модели (сейчас 50 м3, а задача порядка 20000 м3 ), максимальный размер разбиения для финала 0.3 - 0.5, правда я думаю там элементов будет поменьше, так как много мест которые должны быть изначально пустыми (немного больше половины), итого от 80000 элементов. Поэтому необходимо чтоб он мог жевать много элементов. Там правда можно пытаться всунуть вилку, разбив все внутренние объемы на n частей, (условно -стены на этаже, перекрытие в ячейке) и тогда создавать фильтр для каждой такой группы в отдельности, тогда действительно можно что-то получать внутри системы так как объем каждой такой матрицы будет много меньше чем общей.
P.s. Я если честно с программированием знаком крайне поверхностно, объясните что за функцию вы имели ввиду?
Stanum вне форума  
 
Непрочитано 29.05.2015, 16:20
#14
MrWhite


 
Регистрация: 18.09.2011
Нахабино
Сообщений: 1,040


Странно, я сейчас попробовал на задаче с 384 тыс. КЭ создать матрицу, полет нормальный даже не чихнул. У меня правда оперативки 128 гб, но тем не менее не вяжется.
Вот кусок лога - видно размер матрицы (ошибка из-за того что я размерность заведомо больше указал при обращении):
Код:
[Выделить все]
*** ERROR ***                           CP =    2717.756   TIME= 17:21:21
 Matrix H_E : Sizes exceded in value access (Dimensions =
 [353395,353395]).
Впрочем да, у меня тоже больше 800 тыс на 800 тыс не получается сделать..., нужно покумекать с памятью.

По поводу создания своих команд в Ansys - в хелпе ищите по фразе: Creating External Commands

Последний раз редактировалось MrWhite, 29.05.2015 в 16:28.
MrWhite вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > ANSYS > Работа с APDL Math. Почему Команда *dmat при параметре outofcore не отдаёт массив ?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Акты скрытых работ Витос Прочее. Архитектура и строительство 324 05.03.2015 12:24