Example #1
0
void NmssmSusy::setSusy(const NmssmSusy & s) {
  MssmSusy::setSusy(s);
  setLambda(s.displayLambda());
  setKappa(s.displayKappa());
  setSvev(s.displaySvev());
  setMupr(s.displayMupr());
  setXiF(s.displayXiF());
}
void InteriorPointsConstructor::ForceDirectedAlgorithm2()
{
	//Clone the data structure, and initialize it to 0;
	int n = _contourArray->length()/2;
	computeNumberVertices();
	_interiorDisplacementArray = new AcArray<AcGePoint3d>[n+1];
	int i,j, vIter;
	//int i,j,vIter;
	AcGePoint3d delta;
	//int vIter;
	double Volume = (maxX() - minX())*(maxY() - minY())*(maxZ() - minZ());
	double surface = (maxX() - minX())*(maxY() - minY());
	double kappa;
	if (Volume)
		kappa = sqrt(Volume/_numVertices);
	else kappa = sqrt(surface/_numVertices);
	setKappa(kappa);
	//acutPrintf(_T("Proceeding...\n"));
		vector<pair<int, int>> v;
		vector<pair<int, int>>::iterator it;
		
	for (vIter = 0; vIter<2; vIter++)
	{

		//Calculate repulsive forces

		for (i = 0; i < _contourArray->length()/2+1; i++)
		{
			for (j = 0; j < _interiorArray[i].length(); j++)
			{
				if (vIter == 0)
				{
					
					AcGePoint3d * newPoint = new AcGePoint3d;
					newPoint->x = 0.0;
					newPoint->y = 0.0;
					newPoint->z = 0.0;
					_interiorDisplacementArray[i].append(*newPoint);
				}
				else
				{
					_interiorDisplacementArray[i][j].x = 0.0;
					_interiorDisplacementArray[i][j].y = 0.0;
					_interiorDisplacementArray[i][j].z = 0.0;
				}

			
			}
		}
		//acutPrintf(_T("Proceeding...attractive ...\n"));
		//Calculate attractive forces;
		
	
		for (i = 0; i < _contourArray->length()/2; i++)
		{	
			for (j = 0; j < _interiorArray[i].length(); j++)
			{
				if ((i != 0) && (j!=_interiorArray[i].length() - 1) && (j!=0) && (i!=_contourArray->length()/2))
				{	
							arrayNeighbour(v, i, j);
							for (it = v.begin(); it!=v.end(); it++)
							{

								delta.x = _interiorArray[(*it).first][(*it).second].x - _interiorArray[i][j].x;
								delta.y = _interiorArray[(*it).first][(*it).second].y - _interiorArray[i][j].y;
								delta.z = _interiorArray[(*it).first][(*it).second].z - _interiorArray[i][j].z;
								_interiorDisplacementArray[i][j].x = _interiorDisplacementArray[i][j].x + F_attractive(delta.x);
								_interiorDisplacementArray[i][j].y = _interiorDisplacementArray[i][j].y + F_attractive(delta.y);
								_interiorDisplacementArray[i][j].z = _interiorDisplacementArray[i][j].z + F_attractive(delta.z);
							}
							
						
				}		
							
			}
		}
		//Limit the fluctuations first step:
		for (i = 0; i < _contourArray->length()/2+1; i++)
		{
			for (j = 0; j < _interiorArray[i].length(); j++)
			{
				
					_interiorArray[i][j].x = _interiorArray[i][j].x + _interiorDisplacementArray[i][j].x;
					_interiorArray[i][j].y = _interiorArray[i][j].y + _interiorDisplacementArray[i][j].y;
					_interiorArray[i][j].z = _interiorArray[i][j].z + _interiorDisplacementArray[i][j].z;
			}
		}

		

	}
	acutPrintf(_T("\nVolume: %f, numPoints: %d, kappa: %f\n"), Volume, _numVertices, _kappa);
	
}