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

Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > STARK ES > Правильно ли составлена расчетная схема? Stark ES 2021

Правильно ли составлена расчетная схема? Stark ES 2021

Ответ
Поиск в этой теме
Непрочитано 06.03.2022, 21:24 #1
Правильно ли составлена расчетная схема? Stark ES 2021
Jaksol
 
Регистрация: 06.03.2022
Сообщений: 4

Добрый вечер, товарищи. Имеется 5-ти этажное здание парковки, фундамент запроектирован в виде плитного ростверка толщиной 800м, сваи диаметром 820мм разной длины. Колонны сечением 0.4х0.4. Стены, находящиеся в грунте, выполнены монолитные толщиной 200...400 мм. Здание расположено на склоне и въезд на каждый этаж выполнен по грунту. Задняя стена на 4 этажа расположена в грунте. Сейсмика на площадке строительства 8 балллов.

Вопросы:
1) По геологии было выявлено 3 слоя (характеристики приложены картинкой). Сваи по всей длине разбиты на участки по 1 метру, для каждой глубины были определены К.П. через коэфф пропорциональности и заданы Связи по Х и У с конкретной жесткостью по глубине. На участках где свая защемляется в аргиллит, связи по Х и У выполнены жестко, а на конце сваи по всем направлениям. Корректно ли такое задание свай? В СП 24.13330.2011 Свайные фундаменты в таблице В1 не нашел коэф. пропорциональности для скального грунта. При такой схеме гор. перемещение оголовка сваи составляет 9.5 мм. Как я понимаю такое предельное перемещение ни чем не регламентируется, кроме как заданием на проектирование (как это вообще понять)?

2) Величину активного давления грунта определил по п. 9.5 СП 22.13330.2016 Основания зданий и сооружений через удельный вес и коэф. активного давления, и задал ввиде плоскостной нагрузки разной по глубине. Правильно ли? Нужно ли учесть что-то еще?

3) Обычно сейсмику прикладываю к надземной части здания. В отдельном файле рассекаю подземную часть здания, и образовавшиеся узлы жестко закрепляю, прикладываю сейсмику и импортирую узловые нагрузки в основной файл. Правильно ли так учитывать сейсмику? И как быть в данном случае, когда 4 этажа здания под землей. Необходимо ли посчитать интенсивность горизонтального активного давления грунта при сейсмическом воздействии (Рg = ggfl*h - c (k1 + k2) и приложить вместе с основным давлением грунта или только его?

Заранее спасибо!!!

Миниатюры
Нажмите на изображение для увеличения
Название: ИГИ.JPG
Просмотров: 124
Размер:	145.3 Кб
ID:	245831  Нажмите на изображение для увеличения
Название: Горизонтальное перемещение здания.JPG
Просмотров: 141
Размер:	81.4 Кб
ID:	245833  Нажмите на изображение для увеличения
Название: КЭ модель.JPG
Просмотров: 139
Размер:	138.9 Кб
ID:	245834  

Вложения
Тип файла: dwg
DWG 2018
Ар.dwg (735.5 Кб, 17 просмотров)

Просмотров: 3340
 
Непрочитано 07.03.2022, 00:55
#2
Техподдержка ЕВРОСОФТ


 
Регистрация: 05.02.2020
Сообщений: 231


Добрый вечер! Выложите архив исходных данных проекта, созданный средствами СТАРКа.
Техподдержка ЕВРОСОФТ вне форума  
 
Автор темы   Непрочитано 07.03.2022, 01:18
#3
Jaksol


 
Регистрация: 06.03.2022
Сообщений: 4


Файл с расчетной моделью в старке
Вложения
Тип файла: rar vishnyav.rar (64.0 Кб, 25 просмотров)
Jaksol вне форума  
 
Автор темы   Непрочитано 07.03.2022, 14:41
#4
Jaksol


 
Регистрация: 06.03.2022
Сообщений: 4


С вопросами 2 и 3 вроде частично разобрался. Подскажите, по поводу моделирования свай в моей расчетной схеме. При значительных гор. нагрузках нужно ли защемлять сваи снизу, а по длине сваи объемниками? Как это правильно сделать?
Миниатюры
Нажмите на изображение для увеличения
Название: 1.JPG
Просмотров: 74
Размер:	139.4 Кб
ID:	245840  
Jaksol вне форума  
 
Непрочитано 07.03.2022, 16:29
#5
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 1,874


Цитата:
Сообщение от Jaksol Посмотреть сообщение
по длине сваи объемниками
Объемники правильно воспроизводят только взаимовлияние свай от вертикальных нагрузок, что для скального основания бессмысленно.
На горизонтальную нагрузку объемники дают приниципиально неверную картину усилий.
От горизонтальной нагрузки - только нормативные схемы с узловыми податливыми опорами переменной жесткости или с упругим основанием переменной жесткости.
Тестовые схемы - в соседней теме: Упругое основание в Stark.
Там же - скрипты-генераторы схем свай с переменными коэффициентами постели, чтобы вручную не страдать.

Для более удобной проверки напряжений я еще версии с моделированием грунта пластинами делал (смотреть реакции в плоскостных опорах).
Схемы плоские, но из двух таких крест-накрест должна получиться объемная версия. Или скрипты можно подшаманить.
Сохранить с расширением *.HTA, запускать как обычную программу.

Код:
[Выделить все]
<h1>Свая</h1>
<table>
	<tr>
		<td style="text-align: right;">
			Диаметр D =
		</td>
		<td>
			<input name="input_D" value="0.6" style="text-align: right;">
		</td>
		<td>
			м
		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Модуль упругости E =
		</td>
		<td>
			<input name="input_E" value="3e7" style="text-align: right;">
		</td>
		<td>
			кПа
		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Длина надземной части l =
		</td>
		<td>
			<input name="input_l" value="3" style="text-align: right;">
		</td>
		<td>
			м
		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Глубина погружения L =
		</td>
		<td>
			<input name="input_L" value="6" style="text-align: right;">
		</td>
		<td>
			м
		</td>
	</tr>
</table>
<h1>Грунт</h1>
<table>
	<tr>
		<td style="text-align: right;">
			Условная ширина сваи bp =
		</td>
		<td>
			<input name="input_bp" value="1.4" style="text-align: right;">
		</td>
		<td>
			м
		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Коэффициент пропорциональности K =
		</td>
		<td>
			<input name="input_K" value="5000" style="text-align: right;">
		</td>
		<td>
			кН/м<sup>4</sup>
		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Коэффициент условий работы &gamma;<sub>c</sub> =
		</td>
		<td>
			<input name="input_gamma_c" value="1" style="text-align: right;">
		</td>
		<td>

		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Понижающий коэффициент &alpha;<sub>x</sub> =
		</td>
		<td>
			<input name="input_alpha_x" value="1" style="text-align: right;">
		</td>
		<td>

		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Количество участков n =
		</td>
		<td>
			<input name="input_n_regions" value="10" style="text-align: right;">
		</td>
		<td>

		</td>
	</tr>
</table>
<p>
	Файл: <input name="i_filename" value="Свая.fea" style="width:75%;">
	<input type="button" value="Экспорт" onclick="exportFile()" style="width:15%">
</p>
<p>
	1. Для расчета использовать тип конечного элемента "Гибридный-2" (без учета сдвига)<br>
	2. До точки максимальных напряжений в грунте должно быть не менее 5 элементов от поверхности
</p>

<script>
	function Node(id, x, y, z) {
		this.id = id
		this.x = x
		this.y = y
		this.z = z

		this.ToString = function () {
			return "" + this.x + " " + this.y + " " + this.z + "\r\n"
		}
	}

	var DOF_X = 1
	var DOF_Y = 2
	var DOF_Z = 3
	var DOF_RX = 4
	var DOF_RY = 5
	var DOF_RZ = 6

	function Restriction(id, node1, node2, dof) {
		this.id = id
		this.node1 = node1
		this.node2 = node2
		this.dof = dof

		this.ToString = function () {
			return	"" + this.node1.id +
				" " + this.node2.id +
				" " + this.dof +
				" 0 0 0\r\n"
		}
	}

	function ElementLine(id, material, node1, node2, foundation) {
		this.id = id
		this.type = 2
	 	this.material = material
		this.node1 = node1
		this.node2 = node2
		this.foundation = foundation

		this.ToString = function () {
			return	"" + this.type +
				" " + this.material.id + 
				((this.foundation == null) ? " 0" : " " + this.foundation.id) +
				" " + this.node1.id +
				" " + this.node2.id +
				" 0 0 0\r\n"
		}
	}

	function ElementQuadrangle(id, material, node1, node2, node3, node4, foundation) {
		this.id = id
		this.type = 8
		this.material = material
		this.node1 = node1
		this.node2 = node2
		this.node3 = node3
		this.node4 = node4
		this.foundation = foundation

		this.ToString = function () {
			return	"" + this.type +
				" " + this.material.id + 
				((this.foundation == null) ? " 0" : " " + this.foundation.id) +
				" " + this.node1.id +
				" " + this.node2.id +
				" " + this.node3.id +
				" " + this.node4.id +
				" 0\r\n"
		}
	}

	function ProfileCircle(id, D, alpha)
	{
		this.id = id
		this.type = 8
		this.D = D
		this.alpha = alpha

		this.GetA = function()
		{
			return Math.PI * Math.pow(this.D, 2) / 4
		}

		this.GetAs = function()
		{
			return 0
		}

		this.GetAt = function()
		{
			return 0
		}

		this.GetIr = function()
		{
			return Math.PI * Math.pow(this.D, 4) / 32
		}

		this.GetIs = function()
		{
			return Math.PI * Math.pow(this.D, 4) / 64
		}

		this.GetIt = function()
		{
			return Math.PI * Math.pow(this.D, 4) / 64
		}

		this.ToString = function()
		{
			return "" + this.type + " " + this.D + " " + this.alpha + "\r\n"
		}
	}

	function MaterialRod(id, profile, E, G, Rho, Cr, Cs, Ct)
	{
		this.id = id
		this.type = 2
		this.profile = profile
		this.E = E
		this.G = G
		this.Rho = Rho
		this.Cr = Cr
		this.Cs = Cs
		this.Ct = Ct

		this.ToString = function()
		{
			return	"" + this.type +
				" " + this.profile.GetA() +
				" " + this.profile.GetAs() +
				" " + this.profile.GetAt() +
				" " + this.profile.GetIr() +
				" " + this.profile.GetIs() +
				" " + this.profile.GetIt() +
				" " + this.E + 
				" " + this.G +
				" " + this.Rho +
				" " + this.Cr +
				" " + this.Cs +
				" " + this.Ct +
				" 0 \r\n"
		}
	}

	function MaterialOrtho(id, h, E1, E2, nu1, nu2, Rho, alpha, fss, fdp, fSb, fP1, fsp) {
		this.id = id
		this.type = 11
		this.h = h
		this.E1 = E1
		this.E2 = E2
		this.nu1 = nu1
		this.nu2 = nu2
		this.Rho = Rho
		this.alpha = alpha
		this.fss = fss
		this.fdp = fdp
		this.fSb = fSb
		this.fP1 = fP1
		this.fsp = fsp

		this.ToString = function()
		{
			return	"" + this.type +
				" " + this.h +
				" " + this.E1 +
				" " + this.E2 +
				" " + this.nu1 +
				" " + this.nu2 +
				" " + this.Rho +
				" " + this.alpha +
				" 90" +
				" " + this.fss +
				" " + this.fdp +
				" " + this.fSb +
				" " + this.fP1 +
				" " + this.fsp +
				"\r\n"
		}
	}

	function ElasticFoundation(id, C1, C2) {
		this.id = id
		this.type = 1
		this.C1 = C1
		this.C2 = C2

		this.ToString = function () {
			return	"" + this.type +
				" " + this.C1 +
				" " + this.C2 +
				" 0 0\r\n"
		}
	}

	function NodesList() {
		this.nodes = new Array()

		this.Create = function (x, y, z) {
			var id = this.nodes.length + 1
			var node = new Node(id, x, y, z)
			this.nodes.push(node)
			return node
		}

		this.ToString = function () {
			var result = "KNOT " + this.nodes.length + "\r\n"

			for (var i = 0; i < this.nodes.length; i++)
				result += this.nodes[i].ToString()

			return result
		}
	}

	function RestrictionsList() {
		this.restrictions = new Array()

		this.Create = function (node1, node2, dof) {
			var id = this.restrictions.length + 1
			var restriction = new Restriction(id, node1, node2, dof)
			this.restrictions.push(restriction)
			return restriction
		}

		this.ToString = function () {
			var result = "RAND " + this.restrictions.length + "\r\n"

			for (var i = 0; i < this.restrictions.length; i++)
				result += this.restrictions[i].ToString()

			return result
		}
	}

	function ElementsList() {
		this.elements = new Array()

		this.CreateLine = function (material, node1, node2, foundation) {
			var id = this.elements.length + 1
			var element = new ElementLine(id, material, node1, node2, foundation)
			this.elements.push(element)
			return element
		}

		this.CreateQuadrangle = function (material, node1, node2, node3, node4, foundation) {
			var id = this.elements.length + 1
			var element = new ElementQuadrangle(id, material, node1, node2, node3, node4, foundation)
			this.elements.push(element)
			return element
		}

		this.ToString = function () {
			var result = "ELEM " + this.elements.length + "\r\n"

			for (var i = 0; i < this.elements.length; i++)
				result += this.elements[i].ToString()

			return result
		}
	}

	function ProfilesList() {
		this.profiles = new Array()

		this.CreateCircle = function (D, alpha) {
			var id = this.profiles.length + 1
			var profile = new ProfileCircle(id, D, alpha)
			this.profiles.push(profile)
			return profile
		}

		this.ToString = function () {
			var result = "PROF " + this.profiles.length + "\r\n"

			for (var i = 0; i < this.profiles.length; i++)
				result += this.profiles[i].ToString()

			return result
		}
	}

	function MaterialsList() {
		this.materials = new Array()

		this.CreateRod = function(profile, E, G, Rho, Cr, Cs, Ct)
		{
			var id = this.materials.length + 1
			var material = new MaterialRod(id, profile, E, G, Rho, Cr, Cs, Ct)
			this.materials.push(material)
			return material
		}

		this.CreateOrtho = function(h, E1, E2, nu1, nu2, Rho, alpha, fss, fdp, fSb, fP1, fsp)
		{
			var id = this.materials.length + 1
			var material = new MaterialOrtho(id, h, E1, E2, nu1, nu2, Rho, alpha, fss, fdp, fSb, fP1, fsp)
			this.materials.push(material)
			return material
		}

		this.ToString = function () {
			var result = "MATE " + this.materials.length + "\r\n"

			for (var i = 0; i < this.materials.length; i++)
				result += this.materials[i].ToString()

			return result
		}
	}

	function ElasticFoundationsList() {
		this.foundations = new Array()

		this.Create = function (C1, C2) {
			var id = this.foundations.length + 1
			var foundation = new ElasticFoundation(id, C1, C2)
			this.foundations.push(foundation)
			return foundation
		}

		this.ToString = function () {
			var result = "BETT " + this.foundations.length + "\r\n"

			for (var i = 0; i < this.foundations.length; i++)
				result += this.foundations[i].ToString()

			return result
		}
	}

	function Model() {
		this.nodes = new NodesList()
		this.restrictions = new RestrictionsList()
		this.elements = new ElementsList()
		this.materials = new MaterialsList()
		this.profiles = new ProfilesList()
		this.foundations = new ElasticFoundationsList()

		this.ToString = function () {
			var result = "\r\n\r\n\r\nVERSION 1.1.0\r\n"

			result += this.nodes.ToString()
			result += this.restrictions.ToString()
			result += this.elements.ToString()
			result += this.materials.ToString()
			result += this.profiles.ToString()
			result += this.foundations.ToString()

			return result + "ENDE 0\r\n"
		}
	}

	function exportFile() {
		var D = parseFloat(input_D.value)
		var E = parseFloat(input_E.value)
		var l = parseFloat(input_l.value)
		var L = parseFloat(input_L.value)

		var bp = parseFloat(input_bp.value)
		var K = parseFloat(input_K.value)
		var gamma_c = parseFloat(input_gamma_c.value)
		var alpha_x = parseFloat(input_alpha_x.value)
		var nRegions = parseFloat(input_n_regions.value)

		var model = new Model()

		var nPileUndergroundNodes = nRegions + 1

		var pileNodes = new Array()
		var soilNodesL = new Array()
		var soilNodesR = new Array()

		for (var i = 0; i < nPileUndergroundNodes; i++) {
			var x = 0
			var y = 0
			var z = - L * (1 - i / nRegions)

			var node = model.nodes.Create(x, y, z)

			model.restrictions.Create(node, node, DOF_Y)
			if (i == 0) {
				model.restrictions.Create(node, node, DOF_Z)
				model.restrictions.Create(node, node, DOF_RZ)
			}

			pileNodes.push(node)

			y = + bp / 2

			node = model.nodes.Create(x, y, z)

			model.restrictions.Create(node, node, DOF_Y)
			model.restrictions.Create(node, node, DOF_Z)
			model.restrictions.Create(node, node, DOF_RX)
			model.restrictions.Create(node, node, DOF_RZ)

			soilNodesR.push(node)

			y = - bp / 2

			node = model.nodes.Create(x, y, z)

			model.restrictions.Create(node, node, DOF_Y)
			model.restrictions.Create(node, node, DOF_Z)
			model.restrictions.Create(node, node, DOF_RX)
			model.restrictions.Create(node, node, DOF_RZ)

			soilNodesL.push(node)
		}

		var pileProfile = model.profiles.CreateCircle(D, 0)
		var pileMaterial = model.materials.CreateRod(pileProfile, E, E/2.5, 0, 0, 0, 0)
		var soilMaterial = model.materials.CreateOrtho(bp, E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

		for (var i = 0; i < nRegions; i++) {
			model.elements.CreateLine(pileMaterial, pileNodes[i], pileNodes[i + 1])

			var z = L * (1 - 1 / (2 * nRegions) - i / nRegions)
			var C1 = gamma_c * alpha_x * K * z

		 	var foundation = model.foundations.Create(C1, 0)

			model.elements.CreateQuadrangle(soilMaterial, soilNodesL[i], pileNodes[i], pileNodes[i + 1], soilNodesL[i + 1], foundation)
			model.elements.CreateQuadrangle(soilMaterial, pileNodes[i], soilNodesR[i], soilNodesR[i + 1], pileNodes[i + 1], foundation)
		}

		if (l > 0) {
			var consoleNode1 = pileNodes[pileNodes.length - 1]
			var consoleNode2 = model.nodes.Create(0, 0, l)
		 	model.elements.CreateLine(pileMaterial, consoleNode1, consoleNode2)
		}

		var fso = new ActiveXObject("Scripting.FileSystemObject")
		var file = fso.OpenTextFile(i_filename.value, 2, true)
		file.Write(model.ToString())
		file.Close()
	}

</script>

Код:
[Выделить все]
<h1>Свая</h1>
<table>
	<tr>
		<td style="text-align: right;">
			Диаметр D =
		</td>
		<td>
			<input name="input_D" value="0.6" style="text-align: right;">
		</td>
		<td>
			м
		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Модуль упругости E =
		</td>
		<td>
			<input name="input_E" value="3e7" style="text-align: right;">
		</td>
		<td>
			кПа
		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Длина надземной части l =
		</td>
		<td>
			<input name="input_l" value="3" style="text-align: right;">
		</td>
		<td>
			м
		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Глубина погружения L =
		</td>
		<td>
			<input name="input_L" value="6" style="text-align: right;">
		</td>
		<td>
			м
		</td>
	</tr>
</table>
<h1>Грунт</h1>
<table>
	<tr>
		<td style="text-align: right;">
			Условная ширина сваи bp =
		</td>
		<td>
			<input name="input_bp" value="1.4" style="text-align: right;">
		</td>
		<td>
			м
		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Коэффициент пропорциональности K =
		</td>
		<td>
			<input name="input_K" value="5000" style="text-align: right;">
		</td>
		<td>
			кН/м<sup>4</sup>
		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Коэффициент условий работы &gamma;<sub>c</sub> =
		</td>
		<td>
			<input name="input_gamma_c" value="1" style="text-align: right;">
		</td>
		<td>

		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Понижающий коэффициент &alpha;<sub>x</sub> =
		</td>
		<td>
			<input name="input_alpha_x" value="1" style="text-align: right;">
		</td>
		<td>

		</td>
	</tr>
	<tr>
		<td style="text-align: right;">
			Количество участков n =
		</td>
		<td>
			<input name="input_n_regions" value="10" style="text-align: right;">
		</td>
		<td>

		</td>
	</tr>
</table>
<p></p>
<p></p>
<p></p>
<p></p>
<p>
	Файл: <input name="i_filename" value="Свая.sli" style="width:75%;">
	<input type="button" value="Экспорт" onclick="exportFile()" style="width:15%">
</p>
<p>
	1. До точки максимальных напряжений в грунте должно быть не менее 5 элементов от поверхности
</p>

<script>
	function Node(id, x, y, z) {
		this.id = id
		this.x = x
		this.y = y
		this.z = z

		this.ToString = function () {
			return "<NodeCoords NdX=\"" + this.x + "\" NdY=\"" + this.y + "\" NdZ=\"" + this.z + "\" />\r\n"
		}
	}

	var DOF_X = 1
	var DOF_Y = 2
	var DOF_Z = 3
	var DOF_RX = 4
	var DOF_RY = 5
	var DOF_RZ = 6

	function Restriction(id, node, dof) {
		this.id = id
		this.node = node
		this.dof = dof

		this.ToString = function () {
			return "<Restricts NdNum=\"" + this.node.id + "\" NDOF=\"" + this.dof + "\" />\r\n"
		}
	}

	function ElementLine(id, material, node1, node2, foundation) {
		this.id = id
		this.type = 1
		this.material = material
		this.node1 = node1
		this.node2 = node2
		this.foundation = foundation

		this.ToString = function () {
			var result = "<Element Type=\"" + this.type + "\" Material=\"" + this.material.id

			if (this.foundation == null)
				result += "\">\r\n"
			else
				result += "\" Restriction=\"" + foundation.id + "\">"

			return result +
				"<Nodes Nd1=\"" + this.node1.id +
				"\" Nd2=\"" + this.node2.id +
				"\"/>\r\n</Element>\r\n"
		}
	}

	function ElementQuadrangle(id, material, node1, node2, node3, node4, foundation) {
		this.id = id
		this.type = 2
		this.material = material
		this.node1 = node1
		this.node2 = node2
		this.node3 = node3
		this.node4 = node4
		this.foundation = foundation

		this.ToString = function () {
			var result = "<Element Type=\"" + this.type + "\" Material=\"" + this.material.id

			if (this.foundation == null)
				result += "\">\r\n"
			else
				result += "\" Restriction=\"" + foundation.id + "\">"

			return result +
				"<Nodes Nd1=\"" + this.node1.id +
				"\" Nd2=\"" + this.node2.id +
				"\" Nd3=\"" + this.node3.id +
				"\" Nd4=\"" + this.node4.id +
				"\"/>\r\n</Element>\r\n"
		}
	}

	function MaterialRect(id, E, B, H, Rho) {
		this.id = id
		this.type = 1
		this.E = E
		this.B = B
		this.H = H
		this.Rho = Rho

		this.A = B * H
		this.Ix = B * B * H * H / 6.0
		this.Iy = B * H * H * H / 12.0
		this.Iz = B * B * B * H / 12.0
		this.G = E / 2.0 / (1.0 + 0.25)

		this.ToString = function () {
			return "<Material Num=\"" + this.id +
				"\" KindEl=\"" + this.type +
				"\" H=\"" + this.A +
				"\" Ix=\"" + this.Ix +
				"\" Iy=\"" + this.Iy +
				"\" Iz=\"" + this.Iz +
				"\" E=\"" + this.E +
				"\" G=\"" + this.G +
				"\" Ro=\"" + this.Rho +
				"\" IsGeom=\"1\">\r\n" +
				"<SectGeom SGType=\"Rect\" b_OR_D=\"" + this.B +
				"\" h_OR_d=\"" + this.H + "\" />\r\n" +
				"</Material>"
		}
	}

	function MaterialRing(id, E, D, d, Rho) {
		this.id = id
		this.type = 1
		this.E = E
		this.D = D
		this.d = d
		this.Rho = Rho

		this.A = Math.PI * (D * D - d * d) / 4.0
		this.Ix = Math.PI * (D * D * D * D - d * d * d * d) / 32.0
		this.Iy = this.Ix / 2.0
		this.Iz = this.Iy / 2.0
		this.G = E / 2.0 / (1.0 + 0.25)

		this.ToString = function () {
			return "<Material Num=\"" + this.id +
				"\" KindEl=\"" + this.type +
				"\" H=\"" + this.A +
				"\" Ix=\"" + this.Ix +
				"\" Iy=\"" + this.Iy +
				"\" Iz=\"" + this.Iz +
				"\" E=\"" + this.E +
				"\" G=\"" + this.G +
				"\" Ro=\"" + this.Rho +
				"\" IsGeom=\"1\">\r\n" +
				"<SectGeom SGType=\"Ring\" b_OR_D=\"" + this.D +
				"\" h_OR_d=\"" + this.d + "\" />\r\n" +
				"</Material>"
		}
	}

	function MaterialOrtho(id, E1, nu12, E2, nu21, G, h, Rho) {
		this.id = id
		this.type = 3
		this.E1 = E1
		this.nu12 = nu12
		this.E2 = E2
		this.nu21 = nu21
		this.G = G
		this.h = h
		this.Rho = Rho

		this.ToString = function () {
			return "<Material Num=\"" + this.id +
				"\" KindEl=\"" + this.type +
				"\" H=\"" + this.h +
				"\" F=\"" + this.nu12 +
				"\" Ix=\"" + this.E2 +
				"\" Iy=\"" + this.nu21 +
				"\" E=\"" + this.E1 +
				"\" G=\"" + this.G +
				"\" Ro=\"" + this.Rho +
				"\" />\r\n"
		}
	}

	function ElasticFoundation(id, C1, C2) {
		this.id = id
		this.C1 = C1
		this.C2 = C2

		this.ToString = function () {
			return "<ElasticFound FnUnilateral=\"0\" Coef1=\"" + this.C1 + "\" Coef2=\"" + this.C2 + "\"/>\r\n"
		}
	}

	function NodesList() {
		this.nodes = new Array()

		this.Create = function (x, y, z) {
			var id = this.nodes.length + 1
			var node = new Node(id, x, y, z)
			this.nodes.push(node)
			return node
		}

		this.ToString = function () {
			var result = "<NodesCoordArray NumberOfElem=\"" + this.nodes.length + "\">\r\n"

			for (var i = 0; i < this.nodes.length; i++)
				result += this.nodes[i].ToString()

			return result + "</NodesCoordArray>\r\n"
		}
	}

	function RestrictionsList() {
		this.restrictions = new Array()

		this.Create = function (node, dof) {
			var id = this.restrictions.length + 1
			var restriction = new Restriction(id, node, dof)
			this.restrictions.push(restriction)
			return restriction
		}

		this.ToString = function () {
			var result = "<RestrictionsArray NumberOfElem=\"" + this.restrictions.length + "\">\r\n"

			for (var i = 0; i < this.restrictions.length; i++)
				result += this.restrictions[i].ToString()

			return result + "</RestrictionsArray>\r\n"
		}
	}

	function ElementsList() {
		this.elements = new Array()

		this.CreateLine = function (material, node1, node2, foundation) {
			var id = this.elements.length + 1
			var element = new ElementLine(id, material, node1, node2, foundation)
			this.elements.push(element)
			return element
		}

		this.CreateQuadrangle = function (material, node1, node2, node3, node4, foundation) {
			var id = this.elements.length + 1
			var element = new ElementQuadrangle(id, material, node1, node2, node3, node4, foundation)
			this.elements.push(element)
			return element
		}

		this.ToString = function () {
			var result = "<ElementsArray NumberOfElem=\"" + this.elements.length + "\">\r\n"

			for (var i = 0; i < this.elements.length; i++)
				result += this.elements[i].ToString()

			return result + "</ElementsArray>\r\n"
		}
	}

	function MaterialsList() {
		this.materials = new Array()

		this.CreateRect = function (E, B, H, Rho) {
			var id = this.materials.length + 1
			var material = new MaterialRect(id, E, B, H, Rho)
			this.materials.push(material)
			return material
		}

		this.CreateRing = function (E, D, d, Rho) {
			var id = this.materials.length + 1
			var material = new MaterialRing(id, E, D, d, Rho)
			this.materials.push(material)
			return material
		}

		this.CreateOrtho = function (E1, nu12, E2, nu21, G, h, Rho) {
			var id = this.materials.length + 1
			var material = new MaterialOrtho(id, E1, nu12, E2, nu21, G, h, Rho)
			this.materials.push(material)
			return material
		}

		this.ToString = function () {
			var result = "<MaterialsArray NumberOfElem=\"" + this.materials.length + "\">\r\n"

			for (var i = 0; i < this.materials.length; i++)
				result += this.materials[i].ToString()

			return result + "</MaterialsArray>\r\n"
		}
	}

	function ElasticFoundationsList() {
		this.foundations = new Array()

		this.Create = function (C1, C2) {
			var id = this.foundations.length + 1
			var foundation = new ElasticFoundation(id, C1, C2)
			this.foundations.push(foundation)
			return foundation
		}

		this.ToString = function () {
			var result = "<ElasticFoundArray NumberOfElem=\"" + this.foundations.length + "\">\r\n"

			for (var i = 0; i < this.foundations.length; i++)
				result += this.foundations[i].ToString()

			return result + "</ElasticFoundArray>\r\n"
		}
	}

	function Model() {
		this.nodes = new NodesList()
		this.restrictions = new RestrictionsList()
		this.elements = new ElementsList()
		this.materials = new MaterialsList()
		this.foundations = new ElasticFoundationsList()

		this.ToString = function () {
			var result = "<?xml version=\"1.0\" standalone=\"yes\"?>\r\n" +
				"<FE_Project Title=\"Pile\" Description=\"\">\r\n" +
				"<DegreesOfFreedom X=\"1\" Y=\"1\" Z=\"1\" UX=\"1\" UY=\"1\" UZ=\"1\" />\r\n"

			result += this.nodes.ToString()
			result += this.restrictions.ToString()
			result += this.elements.ToString()
			result += this.materials.ToString()
			result += this.foundations.ToString()

			result += "</FE_Project>\r\n"
			return result
		}
	}

	function exportFile() {
		var D = parseFloat(input_D.value)
		var E = parseFloat(input_E.value)
		var l = parseFloat(input_l.value)
		var L = parseFloat(input_L.value)

		var bp = parseFloat(input_bp.value)
		var K = parseFloat(input_K.value)
		var gamma_c = parseFloat(input_gamma_c.value)
		var alpha_x = parseFloat(input_alpha_x.value)
		var nRegions = parseFloat(input_n_regions.value)

		var model = new Model()

		var nPileUndergroundNodes = nRegions + 1

		var pileNodes = new Array()
		var soilNodesL = new Array()
		var soilNodesR = new Array()

		for (var i = 0; i < nPileUndergroundNodes; i++) {
			var x = 0
			var y = 0
			var z = - L * (1 - i / nRegions)

			var node = model.nodes.Create(x, y, z)

			model.restrictions.Create(node, DOF_Y)
			if (i == 0) {
				model.restrictions.Create(node, DOF_Z)
				model.restrictions.Create(node, DOF_RZ)
			}

			pileNodes.push(node)

			y = + bp / 2

			node = model.nodes.Create(x, y, z)

			model.restrictions.Create(node, DOF_Y)
			model.restrictions.Create(node, DOF_Z)
			model.restrictions.Create(node, DOF_RX)
			model.restrictions.Create(node, DOF_RZ)

			soilNodesR.push(node)

			y = - bp / 2

			node = model.nodes.Create(x, y, z)

			model.restrictions.Create(node, DOF_Y)
			model.restrictions.Create(node, DOF_Z)
			model.restrictions.Create(node, DOF_RX)
			model.restrictions.Create(node, DOF_RZ)

			soilNodesL.push(node)
		}

		var pileMaterial = model.materials.CreateRing(E, D, 0, 0)
		var soilMaterial = model.materials.CreateOrtho(E, 0, 0, 0, 0, bp, 0)

		for (var i = 0; i < nRegions; i++) {
			model.elements.CreateLine(pileMaterial, pileNodes[i], pileNodes[i + 1])

			var z = L * (1 - 1 / (2 * nRegions) - i / nRegions)
			var C1 = gamma_c * alpha_x * K * z

			var foundation = model.foundations.Create(C1, 0)

			model.elements.CreateQuadrangle(soilMaterial, soilNodesL[i], pileNodes[i], pileNodes[i + 1], soilNodesL[i + 1], foundation)
			model.elements.CreateQuadrangle(soilMaterial, pileNodes[i], soilNodesR[i], soilNodesR[i + 1], pileNodes[i + 1], foundation)
		}

		if (l > 0) {
			var consoleNode1 = pileNodes[pileNodes.length - 1]
			var consoleNode2 = model.nodes.Create(0, 0, l)
			model.elements.CreateLine(pileMaterial, consoleNode1, consoleNode2)
		}

		var fso = new ActiveXObject("Scripting.FileSystemObject")
		var file = fso.OpenTextFile(i_filename.value, 2, true)
		file.Write(model.ToString())
		file.Close()
	}

</script>
Разбивка свай по метру - грубовата (СП требует 0.25м), от точки максимальных напряжений в грунте под сваей до поверхности должны поместиться несколько элементов, иначе получатся слишком большие погрешности.

Остальные вопросы - тема для многостраничного побоища, если только не удастся найти в литературе пример расчета подземного сооружения на сейсмику.
Нубий-IV вне форума  
 
Автор темы   Непрочитано 07.03.2022, 17:07
#6
Jaksol


 
Регистрация: 06.03.2022
Сообщений: 4


Спасибо за скрипты. Надо будет попробовать
Jaksol вне форума  
 
Непрочитано 08.03.2022, 17:46
#7
Техподдержка ЕВРОСОФТ


 
Регистрация: 05.02.2020
Сообщений: 231


К ответу Нубия-IV мало что можно прибавить. Обращаю Ваше внимание на достаточно грубую КЭ-сетку 1х1 м, я бы рекомендовал использовать функцию сгущения сетки и получить шаг мельче, например - 0.5х0.5 м, это дело нескольких секунд. В следующий раз выкладывайте архив исходных данных проекта, созданный средствами СТАРКа. Файл модели не содержит вспомогательной информации (данных по грунтам, комбинациям и т.п.).
Техподдержка ЕВРОСОФТ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > STARK ES > Правильно ли составлена расчетная схема? Stark ES 2021

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расчетная схема фермы из парных уголков sweetyazi Металлические конструкции 13 27.02.2020 12:32
расчетная схема на ВРУ Yuliya1204 Электроснабжение 13 17.11.2011 19:56
Расчетная схема розпора фермы DrBianko Расчетные программы 3 05.11.2011 00:02
Какая расчетная схема кирпичного столба? G R E N Каменные и армокаменные конструкции 3 28.09.2011 09:13
Расчетная схема усиленной железобетонной пустотной плиты msv_mnv Железобетонные конструкции 2 23.11.2009 17:58