<commit_before>//
// PROJECT CHRONO - http://projectchrono.org
//
// Copyright (c) 2013 Project Chrono
// All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be 
// found in the LICENSE file at the top level of the distribution
// and at http://projectchrono.org/license-chrono.txt.
//
// File authors: <NAME>, <NAME>

#ifndef CHELEMENTGENERIC_H
#define CHELEMENTGENERIC_H


#include "lcp/ChLcpKblockGeneric.h"
#include "lcp/ChLcpVariablesNode.h"
#include "ChElementBase.h"


namespace chrono
{
namespace fem
{



/// Class for all elements whose stiffness matrix can be seen
/// as a NxN block-matrix to be splitted between N nodes.
/// Helps reducing the complexity of inherited FEM elements because
/// it implements some bookkeeping for the interface with LCP solver.
/// This means that most FEM elements inherited from ChElementGeneric
/// need to implement at most the following two fundamental methods: 
///	ComputeKRMmatricesGlobal(), ComputeInternalForces()

class ChApiFem ChElementGeneric : public ChElementBase
{
protected:
	ChLcpKblockGeneric Kmatr;

public:

	ChElementGeneric() {};
	virtual ~ChElementGeneric() {};

				/// Access the proxy to stiffness, for sparse LCP solver
	ChLcpKblockGeneric& Kstiffness() {return Kmatr;}


			//
			// Functions for interfacing to the LCP solver
			//

				/// Tell to a system descriptor that there are item(s) of type
				/// ChLcpKblock in this object (for further passing it to a LCP solver)
				/// Basically does nothing, but inherited classes must specialize this.
	virtual void InjectKRMmatrices(ChLcpSystemDescriptor& mdescriptor)
				{
					mdescriptor.InsertKblock(&Kmatr);
				}
<commit_msg>typos in comments<commit_after>//
// PROJECT CHRONO - http://projectchrono.org
//
// Copyright (c) 2013 Project Chrono
// All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be 
// found in the LICENSE file at the top level of the distribution
// and at http://projectchrono.org/license-chrono.txt.
//
// File authors: <NAME>, <NAME>

#ifndef CHELEMENTGENERIC_H
#define CHELEMENTGENERIC_H


#include "lcp/ChLcpKblockGeneric.h"
#include "lcp/ChLcpVariablesNode.h"
#include "ChElementBase.h"


namespace chrono
{
namespace fem
{



/// Class for all elements whose stiffness matrix can be seen
/// as a NxN block-matrix to be splitted between N nodes.
/// Helps reducing the complexity of inherited FEM elements because
/// it implements some bookkeeping for the interface with LCP solver.
/// This means that most FEM elements inherited from ChElementGeneric
/// need to implement at most the following two fundamental methods: 
///	ComputeKRMmatricesGlobal(), ComputeInternalForces()

class ChApiFem ChElementGeneric : public ChElementBase
{
protected:
	ChLcpKblockGeneric Kmatr;

public:

	ChElementGeneric() {};
	virtual ~ChElementGeneric() {};

				/// Access the proxy to stiffness, for sparse LCP solver
	ChLcpKblockGeneric& Kstiffness() {return Kmatr;}


			//
			// Functions for interfacing to the LCP solver
			//

				/// Tell to a system descriptor that there are item(s) of type
				/// ChLcpKblock in this object (for further passing it to a LCP solver)
	virtual void InjectKRMmatrices(ChLcpSystemDescriptor& mdescriptor)
				{
					mdescriptor.InsertKblock(&Kmatr);
				}

{'fraction_non_alphanumeric': 0.09039039039039039, 'fraction_numerical': 0.0024024024024024023, 'mean_word_length': 3.6587412587412587, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4646345', 'n_tokens_mistral': 1061, 'n_tokens_neox': 960, 'n_words': 369}