kitnone, делюсь очень старым и позабытым опытом, так что не взыщите, если советы покажутся тривиальными. Возможно кто-то из активно действующих специалистов найдет время дать больше. Из учебных материалов, мне в свое время показалось очень внятным описание прогонки в книге Р.П. Федоренко "Введение в вычислительную физику".
Корректно ли она составлена?
Позволительно ли
держать в первом слое? Или лучше раскинуть на оба или, только на второй? Исходил из того что раз
используется на первой половинке то лучше туда отправить и все слагаемые, содержащие это.
Вы решаете уравнение Шредингера, или параболическое волновое уравнение (PWE; в этом случае
имеет смысл третьей пространственной координаты, а
- наличие оптически плотной среды). Для ответа на вопросы хорошо ли делать так или этак, в целом есть два пути: 1. доказывать устойчивость схемы и оценивать зависимость величины невязки от различных параметров или 2. экспериментально подбирать параметры схемы на близких к Вашей задаче вариантах, имеющих точное решение (+ полезно сверяться с физическим смыслом задачи, что не полезли какие-то численные артефакты - тут обычно крайне полезна визуализация). Первый вариант теоретически нагружен (это непросто), во втором сможете получить правдоподобные результаты, но без теоретического обоснования. Из общих рукомахательных соображений "размазывание"
между двумя слоями выглядит симпатичнее, а то Вы сейчас по сути на одном слое решаете неоднородную задачу, а на другом однородную - вряд ли это положительно влияет на устойчивость/невязку схемы (и Вам же это еще с граничными условиями сопрягать, всякие отражения от границ чувствительны к ммм чересчур простым вариантам схемы). Пробуйте, смотрите, что получается именно в Вашей задаче (т.е. я бы рекомендовал второй подход). Тоже из старинных воспоминаний: хорошую устойчивость и медленный рост невязки обеспечивают энергетические (интегральные) подходы: как определяется энергия в Вашей схеме, сколько-куда ее должно втекать-вытекать и т.п. - это может дать неочевидные с ходу малые поправки к коэффициентам схемы, повышающие устойчивость и уменьшающие невязку разностной схемы.
А как
включить в это матричное уравнение? Закинуть в матрицу М на главную диагональ? Тогда получается на каждой(!) итерации необходимо переопределять матрицу? Или отдельно складывать как столбец какой-нибудь?
Да, на главную диагональ, а куда же деваться
Если вы работаете с каким-нибудь матпакетом, там как правило масса эффективных алгоритмов работы с разреженными матрицами (sparse matrices). Если же реализуете прогонку руками, тоже наличие неоднородности
не должно вызывать проблем (кроме, может быть, случаев, когда
имеет разрывы/резкие границы - здесь тоже требуется аккуратность при построении схемы, чтоб не нахватать численных артефактов)