Перейти к содержанию
    

yupich

Участник
  • Постов

    18
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о yupich

  • Звание
    Участник
    Участник
  • День рождения 24.08.1987

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

1 775 просмотров профиля
  1. Доброго всем времени, форумчане! Столкнулся с задачей, пока не знаю, как решить, надеюсь, кто-то подскажет, в каком направлении копать... Если кратко, задача сводится к следующему вопросу: КАК ЗАПУСТИТЬ ОПТИМИЗАТОР, В КОТОРОМ КРУТИЛСЯ БЫ "PARAMETER SWEEP"? Пакет CST Studio -> модуль Microwave. Есть задача оптимизировать EBG-AMC ячейку для того, чтобы задушить поверхностную волну. Обычно, насколько я перелопатил интернет, есть два варианта расчета: 1) Задать плоскую волну и пробник и анализировать любым солвером (Transient, Frequency) значение фазы К-нта отражения в интересуемом диапазоне частот 2) Задать periodic boundaries для ячейки, с помощью EigenMode Solver просчитать, какие моды могут распространяться при различных сдвигах фазы между ячейками (сдвиг задается в граничных условиях и прогоняется через Sweep parameters) , тогда в "Tables->0D Results" получается "дисперсионная диаграмма" (dispersion diagram), где уже можно оценить диапазон частот (Band Gap), в котором волна не распространяется. 2-ой вариант намного и нтереснее, но вопрос, как можно это все оптимизировать, если структуру для одного набора геометрических параметров в любом случае нужно прогнать через sweep parameters для набора сдвига фаз между ячейками . Тогда оптимизатор геометрии ячейки остается недоступным, как мне кажется (либо sweep, либо optimizer). Возможно я не прав. Размышлял, можно ли это сделать только через VBA, но пока что-то глухо с фантазией. Мысли: Пока что только так: - связать CST и matlab, запускать из matlab в режиме sweep parameters - писать оптимизатор на matlab, анализировать результаты кривых - пересчитывать параметры (геометрические параметры топологии) по алгоритму оптимизации - генерировать новые параметры на следующем шаге - закидывать в CST в режиме sweep parameters - и так по кругу до минимизации целевой функции в matlab Кто-нибудь с чем-то подобным сталкивался? Буду благодарен за любые предположения.
  2. Баааа! Большое спасибо, barr, заработало. То, что нужно! Ключевое в этом макросе - функция, о которой я не знал: "RunScript(sfilename)"
  3. Доброго день, форумчане! Вопрос из области макросов в CST Studio Suite Столкнулся с проблемой при работе макроса. Опишу более менее подробно суть проблемы. Для проекта написан макрос VBA с вызовом пользователских функций, без использования которых в длинном коде (>1000 строк) можно сразу застрелиться. В качестве примера банальная функция возведения числа в квадрат. Код: ======================================== Public Function Square(ByVal X As Double) As Double Square = X * X End Function ---------------------------------------------------------------- Option Explicit Sub Main () Dim A As Double Dim B As Double Dim msg As String A = 2.0 B = Square(A) msg = "A= " + CStr(A) + vbCrLf msg = msg + "B= " + CStr(B) + vbCrLf MsgBox msg End Sub ======================================== Из редактора макросов в CST сам макрос запускается без проблем, все работает: отрабатывает и основная функция и пользовательские функции, т.е.функции в области видимости CST Studio Из окна проекта Microwave Studio макрос также запускается командой "Меню->Macros-> {MacrosName}" Проблема в том, что при обновлении проекта (будь то при изменении переменной в списке параметров, либо при обновлении листинга команд "History List") выскакивает ошибка об отсутствии описания вызываемой функции. Оно и понятно: как видно из кода, который вошел в History List, почему-то Программа (CST) копирует тело функции "Main", остальное же пропускает, в т.ч. и пользовательские функции. Ниже для наглядности представлены сриншоты проблемы в хронологическом порядке Файл проекта прилагается Electoronix.zip ВОПРОС! Кто-нибудь сталкивался с такой проблемой, или даст наводку, в какую сторону копать? Я в VBA пока что новичок, приходится ковыряться на форумах и по крупицам собирать информацию... Насколько я знаю, такое выделение выделение в программе невозможно, да и не даст оно вам ничего, т.к. судя по рассказам коллег, которые увлекаются CUDA для решени СЛАУ, переброска данных из основной оперативной памяти в память видеокарты - узкое место. Остается упрощать (в разумных пределах) модель, сетку и т.д.
  4. Спасибочки большое, попробую!!! (Я уж думал, совсем труба, придется изворачиваться с помощью циклов и т.п.)
  5. попробуйте здесь: filestube.com/2b54bf165697706303eb/go.html Доброго времени суток уважаемые форумчане. Столкнулся с проблемой при описании структуры модели в CST MWS с помощью VBA. Надеюсь, что кто-то наведет на путь истинный... Дело в том, что в некоторых случаях в макросе удобно использовать пользовательские функции (для повторения однотипных, но "параметрических" действий, допустим, расставление большого числа портов или пробников по определенному закону). Например, совсем простенький вариант макроса: ************************************************ ' test Sub Main () Dim RB_n As Double RB_n = testFunction(RB_n) End Sub Function testFunction(RB_n_1 As Double) As Double ' Пользовательская функция Dim RB_n_2 As Double RB_n_2 = 2*RB_n_1 testFunction = RB_n_2 End Function ************************************************ Сохраняю макрос. Захожу в редакторе. Переключаюсь в окно MWS. Вызываю макрос в меню "Macros->test". Все выполняется (моя НЕтестовая функция тоже прекрасно работает, ее вариант отрисовывает структуру модели и порты и т.д. ) Но вот если я изменяю значение переменной в списке переменных, или же в Hystory List нажимаю "update", выползает ошибка () Как я понимаю (прошу прощения, новичок в VBA, больше как-то с C++ работаю), не видит он определения функции, при обновлении истории (это видно и ищ кода макроса непосредственно в HystoryList). При этом из меню можно повторно хоть 100 раз этот макрос вызывать - все работает. Кто что посоветует. Может, я что-то упустил. Или в CST использование пользовательских функций в таком контексте не предусмотрено? (CST, кстати, v.2010). Спасибо!
  6. Немного непонятно, как что собой геометрия представляет. Цилиндр имеет электрический контакт с той поверхностью (либо ее частью) которая расположена за ним на рисунке? Если можно, файл проекта в студию...
  7. Люди, добрые, подскажите, как сделать (если это реально) следующее: Оптимизировать с помощью optfeko модель созданную в а editfeko ручками с нуля?! в версии 5.3, 5.4 (с более ранними версиями всё понятно). (Я читаю мануал и не очень въезжаю... )
  8. НУ как мне кажется, по-другому такой порт задать нельзя в этой программе. Обязательно должна быть какая-то стенка (взять тот же самый волноводный порт в HFSS, CST). Вот насчет ее свойства как PEC - мне кажется, что не нужно обращать внимание. Ведь там, где порт накладывается на металл, он заменяет эту стенку. (А вообще интересно, по какому принципу запрограммировали создатели FEKO c помощью "Метода конечных элементов" возбуждение волновода с помощью стенки. МНе кажется на этой стенке токи возбуждаются просто каким-то образом.) Ну если действительно хочется убедиться, то попробуйте опытным путем сделать второй порт на другом конце коаксиала и повесить на него нагрузку. Ну и источник и нагрузку на определенный импеданс настройте. Посмотрите , какой к-нт отражения/КСВ будет. С Размерами в других программах сверьтесь . Да, еще: Очень полезно все-таки геометрические карточки (GEOMETRY CARDS ) читать в мануале (раздел Detailed description of the control cards). Это способ задания тех же элементов конструкции и настроек программы, что вы и в CADFEKO задаете. Только они в текстовом режиме описания модели используются. ;-) Там много написано про особенности. В частности, почитайте обязательно карточку AW - это волноводный порт. Там интересного хватает. (даже про то, как нужно сетку в этом сечении задавать). Кстати, если пользуетесь PROMT, можете посмотреть в сторону онлайновского переводчика GOOGLE - тоже иногда помогает.
  9. НУ что же. Успехов! НУ что же, успехов вам! А насчет литературы и английского, мне кажется, всё будет с опытом! Просто нужно читать...
  10. И так. Насчет сетки и ошибок с ней связанных. Что по-быстрому удалось заметить. (Скачал - запустил). Результат выдает программа (при стандартном размере сетки), как оба человека сказали (felix2 и автор статьи): WARNING 1663: Inhomogeneous segmentation for triangles, но тем не менее считает что-то. Согласен с felix2 насчет маленьких треугольников в сетке (повторюсь - возникают они за счет неидеальных результатов создания сетки. Сама спираль 4-заходная в виде лент-полосок и экран, если можно так выразится, в виде креста не имеют точной подгонки на краях креста). Как я понял, это единственое, почему программа ругается насчет сегментации. Именно программа пишет, что большая разница между самой большой стороной треугольника сетки и самой малой. (соотв. и площади отличаются значительно). Собственно, логично предположить, что при каком-то размере отношения самой большой стороны и самой маленькой прога просто warning пишет. А как только это отношение переваливает порог в большую сторону, то уже пишет ошибку (ну это все , насколько я понимаю, метод конечных элементов - на таких маленьких треугольниках невозможно ток посчитать как нужно - отсюда - ошибка насчет поля) (Если не прав - поправьте, буду признателен) какие выходы: Я попробовал взять немного меньшую сторону треугольника сетки edge=0.5 - начало считать (ошибок не выдало). Но объем задачи то возрос значительно. Если время не жалко и ресурсы позволяют, то можно еще меньшую сетку сделать. В принципе, проблема осталась - треугольники маленькие создаются, как ни крути. Но это не выход. Если собираетесь использовать именно такую конструкцию - попробуйте пошаманить с опциями в окне создания сетки - там оптимизация и сглаживание (но на мой взгляд не поможет, хотя....). Еще вариант (как бы я делал). просто перерисовать кресты - т.е. сделать их с закругленными краями, чтобы края описывали радиус спирали - вот тогда сетка , по идее, должна наложится нормально. Еще Вариант (но тоже не идеальный) попровать создать локальную сетку, более мелкую, [авось только warning вметсто error будет] около мест касания (все-таки задача меньше станет - мелкая сетка будет только вблизи касания крестов и спирали). И еще, просто напоминание, слишком малый размер ячейки сетки не получится сделать - все те же ограничения снизу - в мануале написано максимальное соотношение радиуса проволоки к длине стороны треугольника , в месте иъ контакте . P.S. лично мне почему-то понравилось создавать геометрию в prefeko - текстовым способом - по возможностям не уступает CADFEKO, даже обыгрывает (причем в версии 5.2 существенно). Там параметр сетки задавать можно довольно тщательно. Это к слову. Жаль конечно, что OPTFEKO в версии 5.4 перенесли в CADFEKO - угнетает - нужно MESH из prefeko импортировать и проверять всё. :smile3046: Если что-то непонятно написал - спрашивайте, пишите
  11. Вопрос еще актуален?
  12. Спасибо большое, что хоть кто-то ответил. ;-) Насчет возбуждения сегментами - про это я уже говорил. (такой способ возбуждения показан в ExampleGuide.pdf под номером example 34) (Clipboard 02). Да, он рабочий, но мне не понравилась картинка токов в POSTFEKO, если сравнивать со способом возбуждения волноводным портом. Именно поэтому я написал, что на мой взгляд, это самый неудачный вариант для возбуждения. Если вы имели ввиду какой-то другой способ возбуждения, дайте знать (отличный от этого) , ПЛЗ Насчет структуры, которую я хочу промоделировать - это собственно возбуждение волновода. Хотелось нарисовать структуру, как это в железе бывает: с размерами отверстий.Оплетка вплотую прилегает к стенке волновода, а штырь "торчит" (Clipboard 01). (Ща пока что перебиваюсь только проволочкой в самом волноводе и портом на конце проволоки(точнее сказать, между ее концом и широкой стенкой волновода) (Clipboard 03). Хотя, даже не знаю, какой из вариантов даст правильный входной импеданс: тот который подробный, что я пытался сделать или более простой. (Волновод на рисунках дан в разрезе) Но все же хотелось бы услышать: 1) возможно ли еще как-нибудь возбудить не сегментами 2) Как в народе моделируют такого рода конструкции
  13. Уважаемые ГУРУ, помогите, пожалуйста, советом в FEKO. Вопрос в следующем: Каким образом правильно нарисовать коаксиальный волновод с диэлектриком внутри и, что именно интересно, как его возбудить. (Кто как делает?) Рисовалось в EDITFEKO (по причине дальнейшей оптимизации). Геометрию делал по примеру в FEKO_5.2_Examples Guide.pdf, сам пример: example_34_aw.pre брал за основу пример с возбуждением волноводным портом (есть еще с портом на сегменте) - более правдоподобное поле уж получается в отличие от возбуждения проволочным сегментом. Это к слову. Диэлектрик внутри волновода сделал с помощью карточки "ME" Результат в POSTFEKO для волноводного порта показан на рисунке 00. красным - открытое пространство Вроде бы все путем. Но беда: в случае попытки запустить на выполнение FEKO выкидывает со следующей ошибкой: "Triangle 1 with label Port_source is between the media 0 and polietilen ERROR 4622: A waveguide port must be located in a homogeneous medium (AW card)" Не любит мол волноводный порт диэелектрик (в мануале так и написано). Как только убираю ME карточку (внутри коаксиала только воздух) - считается Наура. Далее попробовал возбудить еdge портом Результат в POSTFEKO с еdge портом показан на рисунках 01 и 02. красным - открытое пространство, желтым - полиэтилен - диэлектрик. После запуска на счет выкинуло со следующей ошибкой: "ERROR 2586: Feeding an edge at the surface of a dielectric body not possible " Фактически, та же картина, как и в случае волноводного порта. (как я понял) smile3046.gif Больше сил нет маяться (остается возбуждение сегментом - наиболее, на мой взгляд, плохой вариант возбуждения). КТО ЧТО ПОДСКАЖЕТ?! Спасибо. (ПРИ НАДОБНОСТИ МОГУ ПРИСЛАТЬ текстовой файлик "проекта" *.fek)
  14. Помогите с FEKO!

    Уважаемые ГУРУ, помогите, пожалуйста, советом в FEKO. Вопрос в следующем: Каким образом правильно нарисовать коаксиальный волновод с диэлектриком внутри и, что именно интересно, как его возбудить. (Кто как делает?) Рисовалось в EDITFEKO (по причине дальнейшей оптимизации). Геометрию делал по примеру в FEKO_5.2_Examples Guide.pdf, сам пример: example_34_aw.pre брал за основу пример с возбуждением волноводным портом (есть еще с портом на сегменте) - более правдоподобное поле уж получается в отличие от возбуждения проволочным сегментом. Это к слову. Диэлектрик внутри волновода сделал с помощью карточки "ME" Результат в POSTFEKO для волноводного порта показан на рисунке 00. красным - открытое пространство Вроде бы все путем. Но беда: в случае попытки запустить на выполнение FEKO выкидывает со следующей ошибкой: "Triangle 1 with label Port_source is between the media 0 and polietilen ERROR 4622: A waveguide port must be located in a homogeneous medium (AW card)" Не любит мол волноводный порт диэелектрик (в мануале так и написано). Как только убираю ME карточку (внутри коаксиала только воздух) - считается Наура. Далее попробовал возбудить еdge портом Результат в POSTFEKO с еdge портом показан на рисунках 01 и 02. красным - открытое пространство, желтым - полиэтилен - диэлектрик. После запуска на счет выкинуло со следующей ошибкой: "ERROR 2586: Feeding an edge at the surface of a dielectric body not possible " Фактически, та же картина, как и в случае волноводного порта. (как я понял) :smile3046: Больше сил нет маяться (остается возбуждение сегментом - наиболее, на мой взгляд, плохой вариант возбуждения). КТО ЧТО ПОДСКАЖЕТ?! Спасибо. (ПРИ НАДОБНОСТИ МОГУ ПРИСЛАТЬ текстовой файлик "проекта" *.fek)
×
×
  • Создать...