52 | | |
53 | | == MHD TEST CODE == |
54 | | 1. const Bz everywhere |
55 | | {{{ |
56 | | DO i=1-rmbc, mx+rmbc ; x = (xl+(REAL(i,xPrec)-half)*dx) |
57 | | DO j=1-rmbc, my+rmbc ; y = (yl+(REAL(j,xPrec)-half)*dy) |
58 | | DO k=1-zrmbc,mz+zrmbc ; z = (zl+(REAL(k,xPrec)-half)*dz) |
59 | | |
60 | | q(i,j,k,iBx)=0d0 |
61 | | q(i,j,k,iBy)=0d0 |
62 | | q(i,j,k,iBz)=sigmaB |
63 | | q(i,j,k,iE)=q(i,j,k,iE)+half*sigmaB**2 |
64 | | |
65 | | CALL ConvertInternaltoTotalEnergy(q(i,j,k,:)) |
66 | | END DO |
67 | | END DO |
68 | | END DO |
69 | | }}} |
70 | | |
71 | | 2. const aux along z direction and Bz everywhere |
72 | | |
73 | | {{{ |
74 | | if ( nDim .eq. 3 .AND. lMHD .AND. lTestConstBz) then |
75 | | aux(1:mx+1, 1:my, 1:mz, 1) = 0d0 |
76 | | aux(1:mx, 1:my+1, 1:mz, 2) = 0d0 |
77 | | DO i=1, mx |
78 | | DO j=1, my |
79 | | DO k=1, mz+1 |
80 | | pos=CellPos(Info, i, j, k) |
81 | | aux(i,j,k,3)=sigmaB !constant along z |
82 | | END DO |
83 | | END DO |
84 | | END DO |
85 | | else |
86 | | aux(:,:,:,:)=0d0 |
87 | | end if |
88 | | |
89 | | .... |
90 | | |
91 | | DO i=1-rmbc, mx+rmbc ; x = (xl+(REAL(i,xPrec)-half)*dx) |
92 | | DO j=1-rmbc, my+rmbc ; y = (yl+(REAL(j,xPrec)-half)*dy) |
93 | | DO k=1-zrmbc,mz+zrmbc ; z = (zl+(REAL(k,xPrec)-half)*dz) |
94 | | |
95 | | q(i,j,k,iBx)=0d0 |
96 | | q(i,j,k,iBy)=0d0 |
97 | | q(i,j,k,iBz)=sigmaB |
98 | | q(i,j,k,iE)=q(i,j,k,iE)+half*sigmaB**2 |
99 | | |
100 | | CALL ConvertInternaltoTotalEnergy(q(i,j,k,:)) |
101 | | END DO |
102 | | END DO |
103 | | END DO |
104 | | }}} |
105 | | |
106 | | 3. Const aux along y direction and By everywhere |
107 | | {{{ |
108 | | if ( nDim .eq. 3 .AND. lMHD .AND. lTestConstBy) then |
109 | | aux(1:mx+1, 1:my, 1:mz, 1) = 0d0 |
110 | | aux(1:mx, 1:my, 1:mz+1, 3) = 0d0 |
111 | | DO i=1, mx |
112 | | DO j=1, my+1 |
113 | | DO k=1, mz |
114 | | aux(i,j,k,2)=sigmaB !constant along z |
115 | | END DO |
116 | | END DO |
117 | | END DO |
118 | | else |
119 | | aux(:,:,:,:)=0d0 |
120 | | end if |
121 | | .... |
122 | | |
123 | | |
124 | | DO i=1-rmbc, mx+rmbc ; x = (xl+(REAL(i,xPrec)-half)*dx) |
125 | | DO j=1-rmbc, my+rmbc ; y = (yl+(REAL(j,xPrec)-half)*dy) |
126 | | DO k=1-zrmbc,mz+zrmbc ; z = (zl+(REAL(k,xPrec)-half)*dz) |
127 | | |
128 | | q(i,j,k,iBx)=0d0 |
129 | | q(i,j,k,iBy)=sigmaB |
130 | | q(i,j,k,iBz)=0d0 |
131 | | q(i,j,k,iE)=q(i,j,k,iE)+half*sigmaB**2 |
132 | | |
133 | | CALL ConvertInternaltoTotalEnergy(q(i,j,k,:)) |
134 | | END DO |
135 | | END DO |
136 | | END DO |
137 | | |
138 | | }}} |
139 | | |
140 | | 4. const Bz in outflow only |
141 | | |
142 | | {{{ |
143 | | |
144 | | DO i=1-rmbc, mx+rmbc ; x = (xl+(REAL(i,xPrec)-half)*dx) |
145 | | DO j=1-rmbc, my+rmbc ; y = (yl+(REAL(j,xPrec)-half)*dy) |
146 | | DO k=1-zrmbc,mz+zrmbc ; z = (zl+(REAL(k,xPrec)-half)*dz) |
147 | | |
148 | | qjet(iBx) = 0d0 |
149 | | qjet(iBy) = 0d0 |
150 | | qjet(iBz) = sigmaB !sigmaFACTOR |
151 | | qjet(iE)=qjet(iE)+half*qjet(iBz)**2 |
152 | | ... |
153 | | qnew=qwind+qjet |
154 | | ... |
155 | | q(i,j,k,1:NrHydroVars)=q(i,j,k,1:NrHydroVars)+(qnew(1:NrHydroVars)-q(i,j,k,1:NrHydroVars)) |
156 | | CALL ConvertInternaltoTotalEnergy(q(i,j,k,:)) |
157 | | |
158 | | END DO |
159 | | END DO |
160 | | END DO |
161 | | }}} |