Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Curve functions: sum, difference #192

Closed
starsforeveryone opened this issue Jan 14, 2023 · 4 comments
Closed

Curve functions: sum, difference #192

starsforeveryone opened this issue Jan 14, 2023 · 4 comments
Labels
enhancement New feature or request

Comments

@starsforeveryone
Copy link

starsforeveryone commented Jan 14, 2023

Dear developers,

first of all: Thank you for creating this awesome piece of software! (so much better than the old "fancontrol"...)

I have an idea on how to make it even better.

In my case (I mean the actual metal case), because of the inverted mainboard tray and generally the way I've designed the hardware positioning, increasing the GPU airflow adds to the CPU airflow. This means that whenever the GPU core temperature rises above its threshold, the GPU fans start spinning, and pump additional air down into the bottom of the case. This has physical reasons because of the way ASUS designed my graphics card: It doesn't exhaust all the warm air via the back of the card, but a significant portion goes straight through the GPU cooler and exists the card on the other side via an opening in the backplate. This warm GPU exhaust air is then stuck in the lower part of my case, and has to be transported outside by the rear case fan. This creates said situation where the airflow from the GPU is physically added to the already existing airflow (CPU -> rear case fan), which creates a need to make the rear case fan speed up accordingly, in order to exhaust the greater air volume.

I therefore need a curve function "add" that would allow me to add the rpm from the gpu curve to the rear fan curve. So that whenever the GPU fans speed up, the rear fan speeds up as well by the same amount (mathematical "add"), in order to get rid of the additional warm air.

Since general mathematical curve functions seem to be useful because they're so versatile / multi-purpose, I suggest implementing "substract", "multiply" and "divide" too. They might be useful to some people with more complex fan structures.

I would have implemented it myself, but sadly, I suck at programming. At least I could narrow it down: The new functions would have to be added to internal/curves/functional.go inside the switch structure from line 33 to 64. There seems to be some array mathematics going on there - this is where the new functions would have to be implemented.

Thank you very much!

@starsforeveryone starsforeveryone added the enhancement New feature or request label Jan 14, 2023
@markusressel
Copy link
Owner

Hey @starsforeveryone , glad you like the project! ❤️

Thx for the detailed description 👍

In the case of the curve function, addition and substraction of other curve values could be implemented in a "sum" and "difference" function type. I am not sure how intuitive the usage of such functions would be due to the fact that the sum of two curves at 50% will already max out a sum curve based on them. The same is already the case for the delta function. I feel like it might be difficult to create useful configurations with those function types but since adding them should be not that hard we can simply give it a try and see if it works out.

I would really like some kind of UI for all of this to make it easier for the user to figure out what is going on, but I can't invest the time into developing it. Maybe some day the API will be used by an ambitious developer 🤞

I don't think multiply and divide doesn't make a whole lot of sense for now, since no use case has come up for them (yet), so there is need to implement anything like that. We can always add it when it becomes necessary.

markusressel added a commit that referenced this issue Jan 15, 2023
…ence_function_types

Feature/#192 sum and difference function types
@markusressel markusressel changed the title Curve functions: add, substract, multiply, divide Curve functions: sum, difference Jan 15, 2023
@markusressel
Copy link
Owner

@starsforeveryone I have merged #194, please update fan2go and give it a try 🤓

@starsforeveryone
Copy link
Author

Thank you very much! :)

I tried to apply the sum function and it seems to work flawlessly!

The fact that the sum of two 50% curves will already create a 100% curve is actually exactly what I'd expect from a sum function. It should add curves A + B. If the given PWM values p are p(A) = 110 and p(B) = 145, the sum should be 255. This means the fan would rotate on max, but that's what the sum is.

@markusressel
Copy link
Owner

Perfect 👍 🥳

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants