<?xml version="1.0" encoding="UTF-8"?> <simulation xmds-version="2"> <name>vibstring_circle_mpi</name> <author>Graham Dennis</author> <description> Vibrating string with Dirichlet boundary conditions on a circle. </description> <features> <benchmark /> <bing /> <fftw plan="patient" /> <globals> <![CDATA[ const real T = 10.0; const real mass = 1e-3; const real length = 1.0; const real mu = mass/length; const real xmax = _max_x; const real width = 0.1; const real absorb = 80.0; ]]> </globals> </features> <geometry> <propagation_dimension> t </propagation_dimension> <transverse_dimensions> <dimension name="x" lattice="256" domain="(-1, 1)" /> <dimension name="y" lattice="256" domain="(-1, 1)" /> </transverse_dimensions> </geometry> <driver name="distributed-mpi" /> <vector name="main" initial_basis="x y" type="complex"> <components> u uDot </components> <initialisation> <![CDATA[ u = exp(-100.0*((x-0.5)*(x-0.5) + y*y)); uDot = 0.0; ]]> </initialisation> </vector> <vector name="boundary" initial_basis="x y" type="real"> <components> bc </components> <initialisation> <![CDATA[ real r = sqrt(x*x + y*y); real rright = xmax-width; real rdamping = r > rright ? absorb*(1-cos(M_PI*(r - rright)/width)) : 0.0; bc = exp(-rdamping); if (r > xmax) bc = 0.0; if ( r > rright) bc = 0.0; else bc = 1.0; ]]> </initialisation> </vector> <sequence> <integrate algorithm="ARK45" tolerance="1e-5" interval="2e-2" steps="1000"> <samples>50 50</samples> <operators> <operator kind="ex"> <operator_names>L</operator_names> <![CDATA[ L = -T*(kx*kx + ky*ky)/mu; ]]> </operator> <integration_vectors>main</integration_vectors> <dependencies>boundary</dependencies> <![CDATA[ du_dt = uDot; duDot_dt = bc*L[u]; ]]> </operators> </integrate> </sequence> <output> <sampling_group basis="x y" initial_sample="yes"> <moments>amp</moments> <dependencies>main</dependencies> <![CDATA[ amp = Re(u); ]]> </sampling_group> <sampling_group basis="kx ky" initial_sample="yes"> <moments>amp</moments> <dependencies>main</dependencies> <![CDATA[ amp = mod2(u); ]]> </sampling_group> </output> </simulation>