c Коэффициент для specifyCoefficients

Обзор c Коэффициента

Эта тема описывает, как записать коэффициенту c в уравнениях такой как

m2ut2+dut·(cu)+au=f

Тема применяется к рекомендуемому рабочему процессу за включение коэффициентов в вашем использовании модели specifyCoefficients.

Для 2D систем, c тензор с 4N2 элементы. Для 3-D систем, c тензор с 9N2 элементы. Для определения элементов тензора см. Определение c Элементов Tensor. N является количеством уравнений, смотрите уравнения, которые Можно Решить Используя Тулбокс УЧП.

Записать коэффициенту c для включения в модель PDE через specifyCoefficients, дайте c как любое из следующего:

  • Если c является постоянным, дайте вектор-столбец, представляющий элементы в тензоре.

  • Если c не является постоянным, дайте указатель на функцию. Функция должна иметь форму

    ccoeffunction(location,state)

    solvepde или solvepdeeig передайте location и state структуры к ccoeffunction. Функция должна возвратить матрицу размера N 1 Nr, где:

    • N 1 является длиной вектора, представляющего c коэффициент. Существует несколько возможных значений N 1, подробный в Некоторых c Векторах Может Быть Коротким. Для 2D геометрии, 1 ≤ N 1 ≤ 4N2, и для 3-D геометрии, 1 ≤ N 1 ≤ 9N2.

    • Nr является числом точек в месте, которое передает решатель. Nr равен длине location.x или любой другой location поле . Функция должна оценить c в этих точках.

Определение c Элементов Tensor

Для 2D систем, обозначения (cu) представляет N-by-1 матрица с (i, 1) - компонент

j=1N(xci,j,1,1x+xci,j,1,2y+yci,j,2,1x+yci,j,2,2y)uj

Для 3-D систем, обозначения (cu) представляет N-by-1 матрица с (i, 1) - компонент

j=1N(xci,j,1,1x+xci,j,1,2y+xci,j,1,3z)uj+j=1N(yci,j,2,1x+yci,j,2,2y+yci,j,2,3z)uj+j=1N(zci,j,3,1x+zci,j,3,2y+zci,j,3,3z)uj

Все представления c коэффициент начинается с “выравнивания” тензора к матрице. Для 2D систем N-by-N-by-2-by-2 тензор сглаживается к матрице 2N-by-2N, где матрицей является логически N-by-N матрица блоков 2 на 2.

(c(1,1,1,1)c(1,1,1,2)c(1,2,1,1)c(1,2,1,2)c(1,N,1,1)c(1,N,1,2)c(1,1,2,1)c(1,1,2,2)c(1,2,2,1)c(1,2,2,2)c(1,N,2,1)c(1,N,2,2)c(2,1,1,1)c(2,1,1,2)c(2,2,1,1)c(2,2,1,2)c(2,N,1,1)c(2,N,1,2)c(2,1,2,1)c(2,1,2,2)c(2,2,2,1)c(2,2,2,2)c(2,N,2,1)c(2,N,2,2)c(N,1,1,1)c(N,1,1,2)c(N,2,1,1)c(N,2,1,2)c(N,N,1,1)c(N,N,1,2)c(N,1,2,1)c(N,1,2,2)c(N,2,2,1)c(N,2,2,2)c(N,N,2,1)c(N,N,2,2))

Для 3-D систем N-by-N-by-3-by-3 тензор сглаживается к матрице 3N-by-3N, где матрицей является логически N-by-N матрица 3х3 блоков.

(c(1,1,1,1)c(1,1,1,2)c(1,1,1,3)c(1,2,1,1)c(1,2,1,2)c(1,2,1,3)c(1,N,1,1)c(1,N,1,2)c(1,N,1,3)c(1,1,2,1)c(1,1,2,2)c(1,1,2,3)c(1,2,2,1)c(1,2,2,2)c(1,2,2,3)c(1,N,2,1)c(1,N,2,2)c(1,N,2,3)c(1,1,3,1)c(1,1,3,2)c(1,1,3,3)c(1,2,3,1)c(1,2,3,2)c(1,2,3,3)c(1,N,3,1)c(1,N,3,2)c(1,N,3,3)c(2,1,1,1)c(2,1,1,2)c(2,1,1,3)c(2,2,1,1)c(2,2,1,2)c(2,2,1,3)c(2,N,1,1)c(2,N,1,2)c(2,N,1,3)c(2,1,2,1)c(2,1,2,2)c(2,1,2,3)c(2,2,2,1)c(2,2,2,2)c(2,2,2,3)c(2,N,2,1)c(2,N,2,2)c(2,N,2,3)c(2,1,3,1)c(2,1,3,2)c(2,1,3,3)c(2,2,3,1)c(2,2,3,2)c(2,2,3,3)c(2,N,3,1)c(2,N,3,2)c(2,N,3,3)c(N,1,1,1)c(N,1,1,2)c(N,1,1,3)c(N,2,1,1)c(N,2,1,2)c(N,2,1,3)c(N,N,1,1)c(N,N,1,2)c(N,N,1,3)c(N,1,2,1)c(N,1,2,2)c(N,1,2,3)c(N,2,2,1)c(N,2,2,2)c(N,2,2,3)c(N,N,2,1)c(N,N,2,2)c(N,N,2,3)c(N,1,3,1)c(N,1,3,2)c(N,1,3,3)c(N,2,3,1)c(N,2,3,2)c(N,2,3,3)c(N,N,3,1)c(N,N,3,2)c(N,N,3,3))

Эти матрицы далее сглажены в вектор-столбец. Сначала N-by-N матрицы и 3х3 блоков 2 на 2 преобразовывается в "векторы" из и 3х3 блоков 2 на 2. Затем блоки превращены в векторы обычным постолбцовым способом.

Вектор коэффициентов c относится к тензору c можно следующим образом. Для 2D систем,

(c(1)c(3)c(4N+1)c(4N+3)c(4N(N1)+1)c(4N(N1)+3)c(2)c(4)c(4N+2)c(4N+4)c(4N(N1)+2)c(4N(N1)+4)c(5)c(7)c(4N+5)c(4N+7)c(4N(N1)+5)c(4N(N1)+7)c(6)c(8)c(4N+6)c(4N+8)c(4N(N1)+6)c(4N(N1)+8)c(4N3)c(4N1)c(8N3)c(8N1)c(4N23)c(4N21)c(4N2)c(4N)c(8N2)c(8N)c(4N22)c(4N2))

Коэффициентом c (i, j, k, l) является последовательно (4N (j –1) + 4i + 2l + k – 6) векторного c.

Для 3-D систем,

(c(1)c(4)c(7)c(9N+1)c(9N+4)c(9N+7)c(9N(N1)+1)c(9N(N1)+4)c(9N(N1)+7)c(2)c(5)c(8)c(9N+2)c(9N+5)c(9N+8)c(9N(N1)+2)c(9N(N1)+5)c(9N(N1)+8)c(3)c(6)c(9)c(9N+3)c(9N+6)c(9N+9)c(9N(N1)+3)c(9N(N1)+6)c(9N(N1)+9)c(10)c(13)c(16)c(9N+10)c(9N+13)c(9N+16)c(9N(N1)+10)c(9N(N1)+13)c(9N(N1)+16)c(11)c(14)c(17)c(9N+11)c(9N+14)c(9N+17)c(9N(N1)+11)c(9N(N1)+14)c(9N(N1)+17)c(12)c(15)c(18)c(9N+12)c(9N+15)c(9N+18)c(9N(N1)+12)c(9N(N1)+15)c(9N(N1)+18)c(9N8)c(9N5)c(9N2)c(18N8)c(18N5)c(18N2)c(9N28)c(9N25)c(9N22)c(9N7)c(9N4)c(9N1)c(18N7)c(18N4)c(18N1)c(9N27)c(9N24)c(9N21)c(9N6)c(9N3)c(9N)c(18N6)c(18N3)c(18N)c(9N26)c(9N23)c(9N2))

Коэффициентом c (i, j, k, l) является последовательно (9N (j –1) + 9i + 3l + k – 12) векторного c.

Некоторые c Векторы Могут Быть Короткими

Часто, ваш тензор c имеет структуру, такой как симметричную или диагональ блока. Во многих случаях можно представлять c использование меньшего вектора, чем один с 4N2 компоненты для 2D или 9N2 компоненты для 3-D. Следующие разделы дают возможности.

2D Системы

Скаляр c, 2D Системы.  Программное обеспечение интерпретирует скалярный c как диагональную матрицу, с c (i, i, 1,1) и c (i, i, 2,2) равный скаляру и всем другим записям 0.

(c000000c000000c000000c000000c000000c)

Двухэлементный Вектор-столбец c, 2D Системы.  Программное обеспечение интерпретирует двухэлементный вектор-столбец c как диагональная матрица, с c (i, i, 1,1) и c (i, i, 2,2) как эти две записи и все другие записи 0.

(c(1)000000c(2)000000c(1)000000c(2)000000c(1)000000c(2))

Трехэлементный Вектор-столбец c, 2D Системы.  Программное обеспечение интерпретирует трехэлементный вектор-столбец c как симметричная матрица диагонали блока, с c (i, i, 1,1) = c (1), c (i, i, 2,2) = c (3), и c (i, i, 1,2) = c (i, i, 2,1) = c (2).

(c(1)c(2)0000c(2)c(3)000000c(1)c(2)0000c(2)c(3)000000c(1)c(2)0000c(2)c(3))

Четырехэлементный Вектор-столбец c, 2D Системы.  Программное обеспечение интерпретирует четырехэлементный вектор-столбец c как матрица диагонали блока.

(c(1)c(3)0000c(2)c(4)000000c(1)c(3)0000c(2)c(4)000000c(1)c(3)0000c(2)c(4))

Вектор-столбец N-элемента c, 2D Системы.  Программное обеспечение интерпретирует N - вектор-столбец элемента c как диагональная матрица.

(c(1)000000c(1)000000c(2)000000c(2)000000c(N)000000c(N))

Внимание

Если N = 2, 3, или 4, 2-, 3-, или форма вектор-столбца с 4 элементами более приоритетен по сравнению с N - форма элемента. Например, если N = 3, и у вас есть матрица c формы

(c1000000c1000000c2000000c2000000c3000000c3)

вы не можете использовать N - форма элемента c. Вместо этого необходимо использовать форму 2N-элемента. Если вы даете c как векторный [c1;c2;c3], программное обеспечение интерпретирует c как форма с 3 элементами:

(c1c20000c2c3000000c1c20000c2c3000000c1c20000c2c3)

Вместо этого используйте форму 2N-элемента [c1;c1;c2;c2;c3;c3].

Вектор-столбец 2N-элемента c, 2D Системы.  Программное обеспечение интерпретирует вектор-столбец 2N-элемента c как диагональная матрица.

(c(1)000000c(2)000000c(3)000000c(4)000000c(2N1)000000c(2N))

Внимание

Если N = 2, форма с 4 элементами более приоритетна по сравнению с формой 2N-элемента. Например, если ваша матрица c

(c10000c20000c30000c4)

вы не можете дать c как [c1;c2;c3;c4], потому что программное обеспечение интерпретирует этот вектор как форму с 4 элементами

(c1c300c2c40000c1c300c2c4)

Вместо этого используйте форму 3N-элемента [c1;0;c2;c3;0;c4] или 4N-элемент формирует [c1;0;0;c2;c3;0;0;c4].

Вектор-столбец 3N-элемента c, 2D Системы.  Программное обеспечение интерпретирует вектор-столбец 3N-элемента c как симметричная матрица диагонали блока.

(c(1)c(2)0000c(2)c(3)000000c(4)c(5)0000c(5)c(6)000000c(3N2)c(3N1)0000c(3N1)c(3N))

Коэффициент c (i, j, k, l) последовательно (3i + k + l – 4) векторного c.

Вектор-столбец 4N-элемента c, 2D Системы.  Программное обеспечение интерпретирует вектор-столбец 4N-элемента c как матрица диагонали блока.

(c(1)c(3)0000c(2)c(4)000000c(5)c(7)0000c(6)c(8)000000c(4N3)c(4N1)0000c(4N2)c(4N))

Коэффициент c (i, j, k, l) последовательно (4i + 2l + k – 6) векторного c.

2 Н (2N+1)/2-Element Вектор-столбец c, 2D Системы.  Программное обеспечение интерпретирует 2N (2N+1)/2-element вектор-столбец c как симметрическая матрица. В следующей схеме, • означает, что запись симметрична.

(c(1)c(2)c(4)c(6)c((N1)(2N1)+1)c((N1)(2N1)+3)c(3)c(5)c(7)c((N1)(2N1)+2)c((N1)(2N1)+4)c(8)c(9)c((N1)(2N1)+5)c((N1)(2N1)+7)c(10)c((N1)(2N1)+6)c((N1)(2N1)+8)c(N(2N+1)2)c(N(2N+1)1)c(N(2N+1)))

Коэффициент c (i, j, k, l), для i < j, последовательно (2j2 – 3j + 4i + 2l + k – 5) векторного c. Для i = j, коэффициент c (i, j, k, l) последовательно (2i2 + i + l + k – 4) векторного c.

4 Н2- Вектор-столбец элемента c, 2D Системы.  Программное обеспечение интерпретирует 4N2- вектор-столбец элемента c как матрица.

(c(1)c(3)c(4N+1)c(4N+3)c(4N(N1)+1)c(4N(N1)+3)c(2)c(4)c(4N+2)c(4N+4)c(4N(N1)+2)c(4N(N1)+4)c(5)c(7)c(4N+5)c(4N+7)c(4N(N1)+5)c(4N(N1)+7)c(6)c(8)c(4N+6)c(4N+8)c(4N(N1)+6)c(4N(N1)+8)c(4N3)c(4N1)c(8N3)c(8N1)c(4N23)c(4N21)c(4N2)c(4N)c(8N2)c(8N)c(4N22)c(4N2))

Коэффициентом c (i, j, k, l) является последовательно (4N (j –1) + 4i + 2l + k – 6) векторного c.

3-D Системы

Скаляр c, 3-D Системы.  Программное обеспечение интерпретирует скалярный c как диагональную матрицу, с c (i, i, 1,1), c (i, i, 2,2), и c (i, i, 3,3) равный скаляру и всем другим записям 0.

(c000000000c000000000c000000000c000000000c000000000c000000000c000000000c000000000c)

Трехэлементный Вектор-столбец c, 3-D Системы.  Программное обеспечение интерпретирует трехэлементный вектор-столбец c как диагональная матрица, с c (i, i, 1,1), c (i, i, 2,2), и c (i, i, 3,3) как эти три записи и все другие записи 0.

(c(1)000000000c(2)000000000c(3)000000000c(1)000000000c(2)000000000c(3)000000000c(1)000000000c(2)000000000c(3))

Вектор-столбец с шестью элементами c, 3-D Системы.  Программное обеспечение интерпретирует вектор-столбец с шестью элементами c как симметричная матрица диагонали блока, с

c (i, i, 1,1) = c (1)
c (i, i, 2,2) = c (3)
c (i, i, 1,2) = c (i, i, 2,1) = c (2)
c (i, i, 1,3) = c (i, i, 3,1) = c (4)
c (i, i, 2,3) = c (i, i, 3,2) = c (5)
c (i, i, 3,3) = c (6).

В следующей схеме, • означает, что запись симметрична.

(c(1)c(2)c(4)000000c(3)c(5)000000c(6)000000000c(1)c(2)c(4)000000c(3)c(5)000000c(6)000000000c(1)c(2)c(4)000000c(3)c(5)000000c(6))

Вектор-столбец с девятью элементами c, 3-D Системы.  Программное обеспечение интерпретирует вектор-столбец с девятью элементами c как матрица диагонали блока.

(c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(3))

Вектор-столбец N-элемента c, 3-D Системы.  Программное обеспечение интерпретирует N - вектор-столбец элемента c как диагональная матрица.

(c(1)000000000c(1)000000000c(1)000000000c(2)000000000c(2)000000000c(2)000000000c(N)000000000c(N)000000000c(N))

Внимание

Если N = 3, 6, или 9, 3-, 6-, или форма вектор-столбца с 9 элементами более приоритетен по сравнению с N - форма элемента. Например, если N = 3, и у вас есть матрица c формы

(c(1)000000000c(1)000000000c(1)000000000c(2)000000000c(2)000000000c(2)000000000c(3)000000000c(3)000000000c(3))

вы не можете использовать N - форма элемента c. Если вы даете c как векторный [c1;c2;c3], программное обеспечение интерпретирует c как форма с 3 элементами:

(c(1)000000000c(2)000000000c(3)000000000c(1)000000000c(2)000000000c(3)000000000c(1)000000000c(2)000000000c(3))

Вместо этого используйте одну из следующих форм:

  • Форма 6N-элемента[c1;0;c1;0;0;c1;c2;0;c2;0;0;c2;c3;0;c3;0;0;c3]

  • Форма 9N-элемента[c1;0;0;0;c1;0;0;0;c1;c2;0;0;0;c2;0;0;0;c2;c3;0;0;0;c3;0;0;0;c3]

Вектор-столбец 3N-элемента c, 3-D Системы.  Программное обеспечение интерпретирует вектор-столбец 3N-элемента c как диагональная матрица.

(c(1)000000000c(2)000000000c(3)000000000c(4)000000000c(5)000000000c(6)000000000c(3N2)000000000c(3N1)000000000c(3N))

Внимание

Если N = 3, форма с 9 элементами более приоритетна по сравнению с формой 3N-элемента. Например, если ваша матрица c

(c(1)000000000c(2)000000000c(3)000000000c(4)000000000c(5)000000000c(6)000000000c(7)000000000c(8)000000000c(9))

вы не можете дать c как [c1;c2;c3;c4;c5;c6;c7;c8;c9], потому что программное обеспечение интерпретирует этот вектор как форму с 9 элементами

(c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(3))

Вместо этого используйте одну из следующих форм:

  • Форма 6N-элемента[c1;0;c2;0;0;c3;c4;0;c5;0;0;c6;c7;0;c8;0;0;c9]

  • Форма 9N-элемента[c1;0;0;0;c2;0;0;0;c3;c4;0;0;0;c5;0;0;0;c6;c7;0;0;0;c8;0;0;0;c9]

Вектор-столбец 6N-элемента c, 3-D Системы.  Программное обеспечение интерпретирует вектор-столбец 6N-элемента c как симметричная матрица диагонали блока. В следующей схеме, • означает, что запись симметрична.

(c(1)c(2)c(4)000000c(3)c(5)000000c(6)000000000c(7)c(8)c(10)000000c(9)c(11)000000c(12)000000000c(6N5)c(6N4)c(6N2)000000c(6N3)c(6N1)000000c(6N))

Коэффициент c (i, j, k, l) последовательно (6i + k + 1/2l (l –1) – 6) векторного c.

Вектор-столбец 9N-элемента c, 3-D Системы.  Программное обеспечение интерпретирует вектор-столбец 9N-элемента c как матрица диагонали блока.

(c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(10)c(13)c(16)000000c(11)c(14)c(17)000000c(12)c(15)c(18)000000000c(9N8)c(9N5)c(9N2)000000c(9N7)c(9N4)c(9N1)000000c(9N6)c(9N3)c(9N))

Коэффициент c (i, j, k, l) последовательно (9i + 3l + k – 12) векторного c.

3 Н (3N+1)/2-Element Вектор-столбец c, 3-D Системы.  Программное обеспечение интерпретирует 3N (3N+1)/2-element вектор-столбец c как симметрическая матрица. В следующей схеме, • означает, что запись симметрична.

(c(1)c(2)c(4)c(7)c(10)c(13)c(3(N1)(3(N1)+1)/2+1c(3(N1)(3(N1)+1)/2+4c(3(N1)(3(N1)+1)/2+7c(3)c(5)c(8)c(11)c(14)c(3(N1)(3(N1)+1)/2+2c(3(N1)(3(N1)+1)/2+5c(3(N1)(3(N1)+1)/2+8c(6)c(9)c(12)c(15)c(3(N1)(3(N1)+1)/2+3c(3(N1)(3(N1)+1)/2+6c(3(N1)(3(N1)+1)/2+9c(16)c(17)c(19)c(3(N1)(3(N1)+1)/2+10c(3(N1)(3(N1)+1)/2+13c(3(N1)(3(N1)+1)/2+16c(18)c(20)c(3(N1)(3(N1)+1)/2+11c(3(N1)(3(N1)+1)/2+14c(3(N1)(3(N1)+1)/2+17c(21)c(3(N1)(3(N1)+1)/2+12c(3(N1)(3(N1)+1)/2+15c(3(N1)(3(N1)+1)/2+18c(3N(3N+1)/25)c(3N(3N+1)/24)c(3N(3N+1)/22)c(3N(3N+1)/23)c(3N(3N+1)/21)c(3N(3N+1)/2))

Коэффициентом c (i, j, k, l), для i < j, является последовательно (9 (j –1) (j –2)/2 + 6 (j –1) + 9i + 3l + k – 12) векторного c. Для i = j, коэффициент c (i, j, k, l) является последовательно (9 (i –1) (i –2)/2 + 15 (i –1) + 1/2l (l –1) + k) векторного c.

9 Н2- Вектор-столбец элемента c, 3-D Системы.  Программное обеспечение интерпретирует 9N2- вектор-столбец элемента c как матрица.

(c(1)c(4)c(7)c(9N+1)c(9N+4)c(9N+7)c(9N(N1)+1)c(9N(N1)+4)c(9N(N1)+7)c(2)c(5)c(8)c(9N+2)c(9N+5)c(9N+8)c(9N(N1)+2)c(9N(N1)+5)c(9N(N1)+8)c(3)c(6)c(9)c(9N+3)c(9N+6)c(9N+9)c(9N(N1)+3)c(9N(N1)+6)c(9N(N1)+9)c(10)c(13)c(16)c(9N+10)c(9N+13)c(9N+16)c(9N(N1)+10)c(9N(N1)+13)c(9N(N1)+16)c(11)c(14)c(17)c(9N+11)c(9N+14)c(9N+17)c(9N(N1)+11)c(9N(N1)+14)c(9N(N1)+17)c(12)c(15)c(18)c(9N+12)c(9N+15)c(9N+18)c(9N(N1)+12)c(9N(N1)+15)c(9N(N1)+18)c(9N8)c(9N5)c(9N2)c(18N8)c(18N5)c(18N2)c(9N28)c(9N25)c(9N22)c(9N7)c(9N4)c(9N1)c(18N7)c(18N4)c(18N1)c(9N27)c(9N24)c(9N21)c(9N6)c(9N3)c(9N)c(18N6)c(18N3)c(18N)c(9N26)c(9N23)c(9N2))

Коэффициентом c (i, j, k, l) является последовательно (9N (j –1) + 9i + 3l + k – 12) векторного c.

Функциональная форма

Если ваш c коэффициент не является постоянным, представляйте его в зависимости от формы

ccoeff = ccoeffunction(location,state)

Передайте коэффициент specifyCoefficients как указатель на функцию, такой как

specifyCoefficients(model,'c',@ccoeffunction,...)

solvepde или solvepdeeig вычислите и заполните данные в location и state массивы структур и передача эти данные к вашей функции. Можно задать функцию так, чтобы ее выход зависел от этих данных. Можно использовать любые имена вместо location и state, но функция должна иметь точно два аргумента. Чтобы использовать дополнительные аргументы в вашей функции, перенесите свою функцию (который берет дополнительные аргументы) с анонимной функцией, которая берет только location и state аргументы. Например:

ccoeff = ...
@(location,state) myfunWithAdditionalArgs(location,state,arg1,arg2...)
specifyCoefficients(model,'c',ccoeff,...
  • location структура с этими полями:

    • location.x

    • location.y

    • location.z

    • location.subdomain

    Поля xY, и z представляйте x - y - и z - координаты точек, для которых ваша функция вычисляет содействующие значения. subdomain поле представляет числа субдомена, которые в настоящее время применяются только к 2D моделям. Поля местоположения являются векторами-строками.

  • state структура с этими полями:

    • state.u

    • state.ux

    • state.uy

    • state.uz

    • state.time

    state.u поле представляет текущее значение решения u. state.ux, state.uy, и state.uz поля являются оценками частных производных решения (∂u / ∂ x, ∂u / ∂ y и ∂u / ∂ z) в соответствующих точках структуры местоположения. Решением и оценками градиента является N-by-Nr матрицы. state.time поле является скалярным временем представления для зависящих от времени моделей.

Ваша функция должна возвратить матрицу размера N 1 Nr, где:

  • N 1 является количеством коэффициентов, которые вы передаете решателю. Существует несколько возможных значений N 1, подробный в Некоторых c Векторах Может Быть Коротким. Для 2D геометрии, 1 ≤ N 1 ≤ 4N2, и для 3-D геометрии, 1 ≤ N 1 ≤ 9N2.

  • Nr является числом точек в месте, которое передает решатель. Nr равен длине location.x или любой другой location поле . Функция должна оценить c в этих точках.

Например, предположите N = 3, и у вас есть 2D геометрия. Предположим свой c матрица имеет форму

c=[12281+x2+y2u(2)1+u(1)2+u(3)2u(2)1+u(1)2+u(3)21+x2+y2s1(x,y)11s1(x,y)]

где не включенными в список элементами является нуль. Здесь s 1 (x, y) 5 в субдомене 1 и 10 в субдомене 2.

Этот c симметричная, блочно диагональная матрица с различными коэффициентами в каждом блоке. Таким образом, естественно представлять c как Вектор-столбец 3N-элемента c, 2D Системы:

(c(1)c(2)0000c(2)c(3)000000c(4)c(5)0000c(5)c(6)000000c(3N2)c(3N1)0000c(3N1)c(3N))

Для той формы следующая функция является соответствующей.

function cmatrix = ccoeffunction(location,state)

n1 = 9;
nr = numel(location.x);
cmatrix = zeros(n1,nr);
cmatrix(1,:) = ones(1,nr);
cmatrix(2,:) = 2*ones(1,nr);
cmatrix(3,:) = 8*ones(1,nr);
cmatrix(4,:) = 1+location.x.^2 + location.y.^2;
cmatrix(5,:) = state.u(2,:)./(1 + state.u(1,:).^2 + state.u(3,:).^2);
cmatrix(6,:) = cmatrix(4,:);
cmatrix(7,:) = 5*location.subdomain;
cmatrix(8,:) = -ones(1,nr);
cmatrix(9,:) = cmatrix(7,:);

Включать эту функцию как ваш c коэффициент, передайте указатель на функцию @ccoeffunction:

specifyCoefficients(model,'c',@ccoeffunction,...

Похожие темы