Высокопроизводительные парал. вычисления на кластерных системах. Воеводин (2005) (1186026), страница 5
Текст из файла (страница 5)
1ектория мелкой частицы в толще крупных состоит из чередования трех типов движений: 1 – свободное падение; 2 – спуск по поверхности шара; 3 – спуск по ложбине между двумя шарами.По окончании осаждения одной частицы по той же схеме моделируется осаждение следующей. Диаметры частиц могут быть одинаковыми или моделироваться случайным образом с вероятностями, соответствующими заданной гранулометрической кривой. По окончанииосаждения всех частиц их координаты запоминаются, записываются вфайлы и в дальнейшем используются для определения емкостных характеристик полученного осадка: первичной пористости, поперечниковпор, координационных чисел как для пор, так и для частиц, размерапоровых каналов и т.д. Описанная модель может быть применима косадкам бассейнов с преимущественно стоячей водой. Она может служить первой ступенью к созданию более сложных моделей, учиты21вающих инерцию, волнения и течения.
Ниже приведен разработанныйнами общий алгоритм процесса седиментации.Общий алгоритм моделирования кластического осадка1. Задать число частиц m.2. В качестве текущей рассмотреть первую частицу.3. Если номер текущей частицы не больше m, тогда на п. 4.
Иначена п. 14.4. С помощью датчика случайных чисел задать горизонтальныекоординаты частицы, равномерно распределенные в пределах заданнойобласти седиментации. Диаметр частицы определить случайным числом, распределенным в соответствии с заданной гранулометрическойкривой, на п. 5.5. Частица падает вертикально вниз, пока не: а) достигнет дна – тогда на п. 13; б) коснется одной из уже осевших частиц (назовем ее первой касательной частицей), тогда – на п. 6.6. Частица скатывается по меридиану первой касательной частицы,пока не : а) достигнет дна – тогда на п.
13; б) достигнет экватора первой касательной частицы – тогда на п. 5; в) коснется грани контейнераседиментации – тогда на п. 7; г) коснется другой частицы (второй касательной частицы), – тогда на п. 9.7. Частица скатывается по ложбине между гранью и касательнойчастицей (траектория – окружность в вертикальной плоскости), покане: а) достигнет дна – тогда на п.
13; б) достигнет экватора касательнойчастицы – тогда на п. 5; в) коснется другой грани контейнера седиментации – тогда на п. 13; г) коснется другой касательной частицы – тогдана п. 8.8. Если проекция центра движущейся частицы пересекает треугольник опоры, то она остановится – тогда на п. 13, иначе скатываетсялибо по ложбине между первой и второй касательными частицами –тогда на п. 9, либо – по ложбине между гранью и второй касательнойчастицей, - тогда на п.
7, либо – по меридиану второй касательной частицы – тогда на п. 6.9. Вычисление координат точки S смены траектории спуска положбине на меридиан. Определение первой и второй касательных частиц по следующему критерию. Первой касательной частицей будет таиз двух частиц, чей центр расположен ниже, второй – другая – на п. 10.10. Если ордината движущейся частицы в момент второго касанияменьше ординаты точки S, тогда – на п. 6. Иначе на п. 11.2211.
Частица скатывается по ложбине (траектория – окружность внаклонной плоскости) между первой и второй касательными частицами, пока не: а) достигнет дна – тогда на п. 13; б) достигнет точки смены S – тогда на п. 6; в) коснется грани контейнера седиментации – тогда на п. 13; г) коснется третьей частицы (третья касательная частица),на п. 12.12. Если проекция центра движущейся частицы пересекает треугольник опоры, то она остановится – тогда на п. 13, иначе скатываетсялибо по одной из ложбин, образуемых третьей касательной частицей иодной из двух прежних касательных частиц – тогда на п. 11, либо – померидиану третьей касательной частицы, – тогда на п.6.13. Рассмотреть следующую частицу, на п. 3.14. Конец.На основе этого алгоритма разработана на языке Pascal программамоделирования гравитационного осадка с заданной гранулометрической характеристикой.Были проведены эксперименты на моноразмерных и двухразмерных моделях, отношения диаметров dК /dМ крупных и мелких частицкоторых изменяются от 2 до 10.
При этом исследовались как насыщенные, так и недосыщенные и пересыщенные в 1,5–2 раза мелкой фракцией. Насыщенный осадок – осадок, мелкая фракция которого по объему в точности заполняет поровое пространство, образуемое крупнойфракцией, с учетом пористости, образуемой мелкой фракцией. Практически насыщенный осадок получается от засыпки пор моноразмерного осадка очень мелкой фракцией.С целью ускорения работы программы предлагается распараллелить выше описанную задачу. Предлагается несколько способов распараллеливания.
Первый заключается в следующем. Пусть имеется вычислительный кластер, состоящий из n процессоров. Каждый процессор имеет свой порядковый номер. Контейнер седиментации разобьемвертикальными плоскостями, параллельными его боковым граням, на nравных по объему прямоугольных призм. Пронумеруем их от 1 до n.Построим взаимно однозначное соответствие между номерами процессоров и призм. На каждом процессоре i запускаем одну и ту же программу моделирования процесса осаждения частиц в i-ой призме (i=1,.., n), т.е.
каждый процессор будет осаждать свою частицу в заданнойпризме. Начальное положение частицы задается в пределах призмытаким образом, чтобы она целиком лежала внутри нее. Каждый раз, каквычислены координаты частиц в критический момент – момент пред23полагаемой смены элемента траектории спуска, необходимо устраивать проверку на принадлежность частиц целиком внутренним областям соответствующих призм. Это необходимо, чтобы избежать пересечений траекторий частиц. Если условие выполнено для всех частиц,фиксируем их новое положение. Процесс повторяется.
Иначе при невыполнении условия для какой-либо частицы, процессор, осуществляющий ее осаждение (пусть его номер m), ставится в состояние ожидания до тех пор, пока частица в соседней призме p не займет устойчивое положение. После этого процессор p останавливается до тех пор,пока процессор m не закончит осаждение своей частицы или его частица перейдет в другую призму. По окончании осаждения частицы каждый процессор приступает к осаждению следующей частицы в той жепризме. Координаты осевших частиц записываются в массив.
При таком подходе может возникнуть ситуация, при которой программа зациклится (рис. 2). Проекция контейнера седиментации, разбитого на 16призм, на горизонтальную плоскость. Частица из 6-й призмы пересеклаобщую грань с соседней 7-й, из 7-й – грань 11-й, из 11-й – грань 10-й,из 10-й – грань 6-й.Мы думаем, что при более детальной разработке алгоритма ееможно будет решить.Рис.
2Очевидно, что для минимизации времени работы программы необходимо разбить массив осевших частиц на n массивов (1, .., n) следующим образом. Если пересечение частицы с призмой k является не пустым множеством или минимальное расстояние от поверхности частицыдо граней призмы меньше максимального диаметра частиц, то записываем ее в массив с номером k. Таким образом, при вычислении координат движущейся частицы в критический момент нужно будет переби24рать на решение не все осевшие частицы, а лишь имеющие пересечение с определенной призмой.Описанный выше способ является трудоемким в смысле его программной реализации, но очень эффективным при моделированииосадка, состоящего из очень большого числа частиц.Второй способ.
На каждом процессоре запускаем одну и ту жепрограмму моделирования процесса осаждения частиц, т.е. каждыйпроцессор будет осаждать свою частицу. Каждый раз, как вычисленыкоординаты частиц в критический момент, необходимо синхронизировать работу процессоров. Т.е.
процессоры должны обменяться информацией о вычисленных координатах движущихся частиц. Это необходимо, чтобы избежать критических ситуаций – пересечений траекторийчастиц. Для этого необходимо определить области, в пределах которыхчастицы могут двигаться по заданным элементам траекторий спусков.В случае спуска по меридиану или ложбине такой областью будет сфера. При вертикальном падении областью будет круговой цилиндр. Еслиэти области для любых двух частиц не пересекаются, то и траекторииэтих частиц не пересекаются.
Если критических ситуаций не возникло,фиксируем координаты частиц. Иначе (при возникновении критической ситуации, например между двумя частицами) процессор, имеющий больший порядковый номер, ставится в состояние ожидания дотех пор, пока частица, осаждаемая конкурирующим с ним процессором, не займет устойчивое положение. Все остальные процессоры продолжают вычисления. Координаты осевших частиц записываются вмассив.