如果我使用以下方式创建fipy 2D网格:
function openQRCamera(node) {
var reader = new FileReader();
reader.onload = function() {
node.value = "";
qrcode.callback = function(res) {
if(res instanceof Error) {
alert("No QR code found. Please make sure the QR code is within the camera's frame and try again.");
} else {
node.parentNode.previousElementSibling.value = res;
}
};
qrcode.decode(reader.result);
};
reader.readAsDataURL(node.files[0]);
document.getElementById("showMe").style.display="block";
myLog();
}
function myLog(){
Vcard0 = document.getElementById("iCard").value;
//test vcard scan variable set
console.log(Vcard0);
//remove beginning and end vcard
Vcard0 = Vcard0.replace('BEGIN:VCARDVERSION:2.1',"");
Vcard0 = Vcard0.replace('END:VCARD',"");
//insert colons for splitting pairs
Vcard0 = Vcard0.replace('FN:',':Fn:');
Vcard0 = Vcard0.replace('N:',':N:');
Vcard0 = Vcard0.replace('ORG:',':ORG:');
Vcard0 = Vcard0.replace('TITLE:',':TITLE:');
Vcard0 = Vcard0.replace('TEL;WORK;VOICE:',':TEL:');
Vcard0 = Vcard0.replace('EMAIL;WORK;INTERNET:',':EMAIL:');
//add colons to prepare qrcode for split function
var Vcard1 = Vcard0.replace(/(\r\n|\n|\r)/gm,":");
Vcard1 = Vcard1.replace('::',':');
var qrArray = Vcard1.split(":");
var qrArrayJSON = JSON.stringify(qrArray);
//test array pairs
for(i=0;i<qrArray.length;i++)
{
console.log(qrArray[i]);
}
console.log(qrArrayJSON);
//search for titles and set variable to next element (value is the next field)
Fn = qrArray[(qrArray.indexOf("Fn"))+1];
N = qrArray[(qrArray.indexOf("N"))+1];
ORG = qrArray[(qrArray.indexOf("ORG"))+1];
TITLE = qrArray[(qrArray.indexOf("TITLE"))+1];
TEL = qrArray[(qrArray.indexOf("TEL"))+1];
EMAIL = qrArray[(qrArray.indexOf("EMAIL"))+1];
//check for null
if (Fn === null || Fn === " ")
{Fn = "";}
if (N === null || N === " ")
{N = "";}
if (ORG === null || ORG === " ")
{ORG = "";}
if (TITLE === null || TITLE === " ")
{TITLE = "";}
if (TEL === null || TEL === " ")
{TEL = "";}
if (EMAIL === null || EMAIL === " ")
{EMAIL = "";}
//test variables
console.log(Fn);
console.log(N);
console.log(ORG);
console.log(TITLE);
console.log(TEL);
console.log(EMAIL);
//set text inputs to variables
document.getElementById("hideMe").style.display = "none";
document.getElementById("iFN").value=Fn;
document.getElementById("iORG").value=ORG;
document.getElementById("iTITLE").value=TITLE;
document.getElementById("iTEL").value=TEL;
document.getElementById("iEMAIL").value=EMAIL;
document.getElementById("iNOTES").value=NOTES;
}
我得到了一个合理的矩形元素网格。但是,如果我采用此网格的值并用它们来构造香草mesh = Grid2D(nx=3, ny=3, dx=1., dy=1.)
:
Mesh2D
我得到一个三角形的网格,并且某些三角形似乎无效。如果我这样做:
mesh2d = Mesh2D(mesh.vertexCoords, mesh.faceVertexIDs, mesh.cellFaceIDs)
并使用matplotlib查看器查看它,一些三角形没有填充,我认为这是无效的。
我可以使用model = CellVariable(mesh=mesh2d, value=1.)
重新创建原始的矩形网格吗?我想这样做,是因为在调用Mesh2D
时我想替代mesh.vectorCoords
的另一个来源使矩形网格坐标变形。面的顶点和单元的面是相同的,只是网状织物变形了。
答案 0 :(得分:1)
我认为查看器无法显示Mesh2D网格类,而不能显示任何使用Mesh2D对象求解方程式的根本错误的东西。为了证明这一点,您可以使用Mesh2D解决一个简单的方程式,然后映射回Grid2D以显示您的数据。例如,
import fipy
mesh = fipy.Grid2D(nx=3, ny=3, dx=1., dy=1.)
mesh2d = fipy.meshes.mesh2D.Mesh2D(mesh.vertexCoords, mesh.faceVertexIDs, mesh.cellFaceIDs)
var = fipy.CellVariable(mesh=mesh, value=1.)
var2D = fipy.CellVariable(mesh=mesh2d, value=1.)
var2D.constrain(2, where=mesh.facesRight)
var2D.constrain(0, where=mesh.facesLeft)
fipy.DiffusionTerm().solve(var2D)
var[:] = var2D(mesh.cellCenters, order=1)
fipy.Viewer(var).plot()
raw_input('stop')
,结果看起来正确。我们已经在Mesh2D
上使用变量解决了一个方程式,它似乎运行得很好。
上面是使用__call__
的{{1}}方法来插值回到CellVariable
上的变量的。这种方法也适用于变形的网格。插值仅是一阶。
答案 1 :(得分:1)
export default class LoginScreen extends Component {
render() {
return (
<Wallpaper>
</Wallpaper>
);
}
}
有许多优化方案,它们在求解和查看方面都是自洽的,但不会转化为一般的网格。您可以通过
Grid2D