140usage=
"usage: mkgeo_obstacle
141 [nx=$nx_default [ny=nx]]
153pkgbindir="`rheolef-config --pkglibdir`"
157 [0-9]*)
if test x$nx = x
""; then nx=$1;
else ny=$1; fi;;
161 -quarter) quarter=1;;
163 -zr|-cartesian) sys_coord_opt=
"$1";;
164 -name) name=$2; shift;;
165 -hmin) hmin=$2; shift;;
167 -nosplit) split=false;;
169 -noclean) clean=false;;
170 -verbose) verbose=true;;
171 -noverbose) verbose=false;;
172 -h) /bin/echo -E ${usage} >&2; exit 0;;
173 *) /bin/echo -E ${usage} >&2; exit 1;;
177if test x
"$nx" = x
""; then
180if test x
"$ny" = x
""; then
183if test $L =
"unset"; then
184 L=`echo | awk -v c=$c
'{print c < 2 ? 2 : 2*c}'`
186c_error=`echo | awk -v c=$c
'{print (c <= 1 ? "true" : "false")}'`
188 echo
"$0: invalid c=$c" 1>&2 ; exit 1
216awk -v L=$L -v c=$c -v N=$N -v quarter=$quarter
'
218 pi = 3.14159265358979323846
219 print "MeshVersionFormatted"
224 print " ", (!quarter ? 6+N : 4+N)
226 printf (
" %.16g %.16g %d\n", -L, 0, 1)
227 printf (
" %.16g %.16g %d\n", -1, 0, 2)
228 for (i = 1; i <= N; ++i) {
229 theta = pi - pi*(1.0*i/N)
230 printf (
" %.16g %.16g %d\n", cos(theta), sin(theta), 2+i)
232 printf (
" %.16g %.16g %d\n", L, 0, 3+N)
233 printf (
" %.16g %.16g %d\n", L, c, 4+N)
234 printf (
" %.16g %.16g %d\n", 0, c, 5+N)
235 printf (
" %.16g %.16g %d\n", -L, c, 6+N)
237 printf (
" %.16g %.16g %d\n", 0, 1, 1)
238 for (i = 1; i <= N; ++i) {
239 theta = pi/2 - pi/2*(1.0*i/N)
240 printf (
" %.16g %.16g %d\n", cos(theta), sin(theta), 1+i)
242 printf (
" %.16g %.16g %d\n", L, 0, 2+N)
243 printf (
" %.16g %.16g %d\n", L, c, 3+N)
244 printf (
" %.16g %.16g %d\n", 0, c, 4+N)
247 print " ", (!quarter ? 6+N : 4+N)
250 for (i = 0; i < N; ++i) {
251 print " ", 2+i, 2+i+1, 102
253 print " ", 2+N, 3+N, 101
254 print " ", 3+N, 4+N, 103
255 print " ", 4+N, 5+N, 104
256 print " ", 5+N, 6+N, 104
257 print " ", 6+N, 1, 105
259 for (i = 0; i < N; ++i) {
260 print " ", 1+i, 1+i+1, 101
262 print " ", 1+N, 2+N, 102
263 print " ", 2+N, 3+N, 103
264 print " ", 3+N, 4+N, 104
265 print " ", 4+N, 1, 105
270$verbose && echo "! $name.bamgcad created" 1>&2
272if test $quarter -eq 0; then
273cat > $name.dmn << EOF1
283cat > $name.dmn << EOF2
293$verbose && echo
"! $name.dmn created" 1>&2
300awk -v L=$L -v c=$c -v N=$N -v hmin=$hmin -v nx=$nx -v ny=$ny -v quarter=$quarter
'
307 h1 = (c-1 < 1) ? hf : h0
313 print (!quarter ? 6+N : 4+N), 3
315 printf (
" %.16g %.16g %.16g\n", mx, 0, my)
316 for (i = 0; i <= N; ++i) {
318 theta = (i < N/2) ? 1.0*i/(0.5*N) : 1.0*(N-i)/(0.5*N);
319 hi = h1*theta + h0*(1-theta)
321 printf (
" %.16g %.16g %.16g\n", mi, 0, mi)
323 printf (
" %.16g %.16g %.16g\n", mx, 0, my)
324 printf (
" %.16g %.16g %.16g\n", mx, 0, my)
325 printf (
" %.16g %.16g %.16g\n", mf, 0, mf)
326 printf (
" %.16g %.16g %.16g\n", mx, 0, my)
328 for (i = 0; i <= N; ++i) {
330 hi = h1*theta + h0*(1-theta)
332 printf (
" %.16g %.16g %.16g\n", mi, 0, mi)
334 printf (
" %.16g %.16g %.16g\n", mx, 0, my)
335 printf (
" %.16g %.16g %.16g\n", mx, 0, my)
336 printf (
" %.16g %.16g %.16g\n", mf, 0, mf)
341$verbose && echo "! $name.mtr created" 1>&2
343to_clean=
"$to_clean $name.mtr"
345command=
"bamg -g $name.bamgcad -M $name.mtr -o $name.bamg"
347 command=
"$command 1>&2"
349 command=
"$command 1> $name.bamglog"
350 to_clean=
"$to_clean $name.bamglog"
352$verbose && echo
"! $command" 1>&2
355if test $status -ne 0; then
356 if $verbose; then true;
else cat $name.bamglog 1>&2; fi
357 echo
"$0: command failed" 1>&2
360echo
"! $name.bamg created" 1>&2
363 filter=
"| ${pkgbindir}/geo_split | geo -upgrade -geo -"
367command=
"bamg2geo $name.bamg $name.dmn $sys_coord_opt $filter > $name.geo"
368$verbose && echo
"! $command" 1>&2
371if test $status -ne 0; then
372 echo
"$0: command failed" 1>&2
375echo
"! $name.geo created" 1>&2
377 command=
"rm -f $to_clean"
378 $verbose && echo
"! $command" 1>&2